国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C 語言每日一題——旋轉數(shù)組的最小數(shù)字

這篇具有很好參考價值的文章主要介紹了C 語言每日一題——旋轉數(shù)組的最小數(shù)字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?一、題目內(nèi)容

C 語言每日一題——旋轉數(shù)組的最小數(shù)字,c語言,數(shù)據(jù)結構,算法

?提供一下該OJ題的鏈接:旋轉數(shù)組的最小數(shù)字_??皖}霸_??途W(wǎng) (nowcoder.com)

二、題目分析

通過示例1可知,我們寫代碼的目的是在數(shù)組中找到一個最大值,并且返回來

我們很容易的會想到創(chuàng)建一個變量:int min = 0; 然后遍歷整個數(shù)組,依次比較把一個最小值用該變量接收;但是時間復雜度是O(n),空間復雜度是O(1),這很顯然不符合題目時間復雜度O(logn)的要求。

通過O(logn),這個要求,我們由果索因,會想到之前我們經(jīng)常打招呼的二分查找法,其時間復雜度符合O(logn);但是二分查找的前提是:需要數(shù)組的有序的;

我們?nèi)绻麑λM行排序的話,那最快的排序的時間復雜度至少是O(nlogn),顯然我們要先排序是不可行的。

我們在仔細回閱問題的描述;發(fā)現(xiàn)這個旋轉數(shù)組也有他的特殊之處:

1.該數(shù)組有兩個子數(shù)組是有序的。且該數(shù)組的最小值一定在數(shù)組的前一個字數(shù)組升序邊界;

2.該數(shù)組的最后一個元素很大概率不屬于我們要找的元素;

于是我們得出了一個類似于二分法(也是用雙指針),但不同于二分法什么時候折半?yún)^(qū)間的考慮

C 語言每日一題——旋轉數(shù)組的最小數(shù)字,c語言,數(shù)據(jù)結構,算法

?根據(jù)對上圖的理解:我們就可以知道,這題中的二分法,與之前用的二分法,差別就在于判斷條件。

那有人會問,若下標mid所指向的值 = 下標right所指向的值,該怎么辦?

right-1;縮小范圍;。

三、完整代碼

/**
 * 代碼中的類名、方法名、參數(shù)名已經(jīng)指定,請勿修改,直接返回方法規(guī)定的值即可
 *
 * 
 * @param nums int整型一維數(shù)組 
 * @param numsLen int nums數(shù)組長度
 * @return int整型
 */
int minNumberInRotateArray(int* nums, int numsLen ) 
{
    int lift  = 0;
    int right = numsLen-1;
     //4 5 6 7 8 9 1 2 3
     //8 9 1 2 3
     //8 9 1
     //1
     while(lift<right)
    {
         int mid   = (lift+right)/2;
    if(nums[mid]>nums[right])
    {
        //前邊的一半?yún)^(qū)間可以拋棄;
        lift = mid+1;
    }
    else if(nums[mid]<nums[right])
    {
        //后別的一半?yún)^(qū)間可以拋棄(不包括mid);
        right = mid;
    }
    else
    {
        //往前面走一位;
        right -= 1;
    }
    }
    return nums[lift];
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-804359.html

到了這里,關于C 語言每日一題——旋轉數(shù)組的最小數(shù)字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C語言每日一題:5.至少是其他數(shù)字的兩倍+兩個數(shù)組的交集。

    C語言每日一題:5.至少是其他數(shù)字的兩倍+兩個數(shù)組的交集。

    第一題: 1.需要我們返回最大數(shù)值的下標,所以先循環(huán)遍歷我們的這個數(shù)組記錄一下最大的數(shù)值和下標位置。 2.使用qsort排序(總是存在唯一的最大整數(shù)) 3所以排序之后的數(shù)組的倒數(shù)第二個元素就是除了最后一個元素在數(shù)組中最大的。 4.只需要判斷這個數(shù)的兩倍是否小于等于

    2024年02月15日
    瀏覽(23)
  • 每日一題---OJ題: 旋轉數(shù)組

    每日一題---OJ題: 旋轉數(shù)組

    片頭 嗨! 小伙伴們,咱們又見面啦,今天我們一起來學習一道OJ題---旋轉數(shù)組 emmm,看上去好像沒有那么難,我們一起來分析分析? 比如: 數(shù)組里面有7個元素,分別為 1, 2, 3, 4, 5, 6, 7 , 現(xiàn)在我們將數(shù)組中的元素向右輪轉3個位置 第一次輪轉:將最后一個元素\\\"7\\\"放在第一個位置,后面的元素

    2024年04月12日
    瀏覽(13)
  • ( 數(shù)組) 209. 長度最小的子數(shù)組——【Leetcode每日一題】

    ( 數(shù)組) 209. 長度最小的子數(shù)組——【Leetcode每日一題】

    難度:中等 給定一個含有 n 個正整數(shù)的數(shù)組和一個正整數(shù) target 。 找出該數(shù)組中滿足其和 ≥ target 的長度最小的 連續(xù)子數(shù)組 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0 。 示例 1: 輸入:target = 7, nums = [2,3,1,2,4,3] 輸出:2 解釋:子數(shù)

    2024年02月06日
    瀏覽(30)
  • 【算法訓練-數(shù)組 五】【二分查找】:旋轉排序數(shù)組的最小數(shù)字、旋轉排序數(shù)組的指定數(shù)字

    【算法訓練-數(shù)組 五】【二分查找】:旋轉排序數(shù)組的最小數(shù)字、旋轉排序數(shù)組的指定數(shù)字

    廢話不多說,喊一句號子鼓勵自己:程序員永不失業(yè),程序員走向架構!本篇Blog的主題是【數(shù)組的二分查找】,使用【數(shù)組】這個基本的數(shù)據(jù)結構來實現(xiàn),這個高頻題的站點是: CodeTop ,篩選條件為: 目標公司+最近一年+出現(xiàn)頻率排序 ,由高到低的去 牛客TOP101 去找,只有兩

    2024年02月09日
    瀏覽(16)
  • 【劍指 offer】旋轉數(shù)組的最小數(shù)字

    【劍指 offer】旋轉數(shù)組的最小數(shù)字

    ?個人主頁:bit me?? ?當前專欄:算法訓練營?? 核心考點:數(shù)組理解,二分查找,臨界條件 描述: 有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進行旋轉,即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這

    2023年04月20日
    瀏覽(20)
  • (排序) 劍指 Offer 45. 把數(shù)組排成最小的數(shù) ——【Leetcode每日一題】

    (排序) 劍指 Offer 45. 把數(shù)組排成最小的數(shù) ——【Leetcode每日一題】

    難度:中等 輸入一個非負整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來排成一個數(shù),打印能拼接出的所有數(shù)字中最小的一個。 示例 1: 輸入: [10,2] 輸出: “102” 示例 2: 輸入: [3,30,34,5,9] 輸出: “3033459” 提示 : 0 nums.length = 100 說明: 輸出結果可能非常大,所以你需要返回一個字符串而不

    2024年02月10日
    瀏覽(18)
  • 劍指offer面試題8 旋轉數(shù)組的最小數(shù)字

    分析 首先一定要記住只要看到排序數(shù)組的查找,思維一定要往二分法上靠,然后再思考清楚如何利用二分法。而如何利用二分法一定要仔細分析所給的數(shù)組的特點:遞增數(shù)組且最開始的若干元素搬到數(shù)組的末尾,相當于該數(shù)組由倆個遞增小數(shù)組構成,前面的數(shù)組元素肯定大于

    2024年01月24日
    瀏覽(18)
  • 劍指 Offer 11. && LeetCode 154. 旋轉數(shù)組的最小數(shù)字

    參考資料:LeetCode 官方解答 劍指 Offer 11. 旋轉數(shù)組的最小數(shù)字 把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉。 給你一個可能存在 重復 元素值的數(shù)組 numbers ,它原來是一個升序排列的數(shù)組,并按上述情形進行了一次旋轉。請返回旋轉數(shù)組的最小元素

    2024年02月09日
    瀏覽(21)
  • Java旋轉數(shù)組中的最小數(shù)字(圖文詳解版)

    Java旋轉數(shù)組中的最小數(shù)字(圖文詳解版)

    目錄 1.題目描述 2.題解 分析 具體實現(xiàn) 方法一(遍歷): 方法二(排序): 方法三(二分查找): 有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進行旋轉,即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這樣

    2024年02月13日
    瀏覽(15)
  • 【每日一題Day220】LC1439有序矩陣中的第 k 個最小數(shù)組和 | 堆

    再來做一下373,之前都沒有試過用小頂堆求第K小的,有序這個條件對我而言是擺設了 查找和最小的 K 對數(shù)字【LC373】 給定兩個以 升序排列 的整數(shù)數(shù)組 nums1 和 nums2 , 以及一個整數(shù) k 。 定義一對值 (u,v) ,其中第一個元素來自 nums1 ,第二個元素來自 nums2 。 請找到和最小的 k

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包