開發(fā)人員必須掌握的高頻算法題之數(shù)組(1)

1.搜索插入位置
給定一個排序數(shù)組和一個目標值舆床,在數(shù)組中找到目標值棋蚌,并返回其索引。如果目標值不存在于數(shù)組中挨队,返回它將會被按順序插入的位置谷暮。
你可以假設數(shù)組中無重復元素。
示例 1:
輸入: [1,3,5,6], 5
輸出: 2
示例 2:
輸入: [1,3,5,6], 2
輸出: 1
考點:二分法查找

 public int binarySearch(int[] numbers, int target) {
        int start = 0;
        int end = numbers.length - 1;

        while (end >= start) {
            int mid = (start + end) / 2;
            if (target > numbers[mid]) {
                start = mid + 1;
            } else if (target < numbers[mid]) {
                end = mid - 1;
            } else {
                return mid;
            }
        }
        return end + 1;
    }

2.移除元素
給你一個數(shù)組 nums 和一個值 val盛垦,你需要 原地 移除所有數(shù)值等于 val 的元素湿弦,并返回移除后數(shù)組的新長度。
不要使用額外的數(shù)組空間腾夯,你必須僅使用 O(1) 額外空間并「原地」修改輸入數(shù)組颊埃。
元素的順序可以改變。你不需要考慮數(shù)組中超出新長度后面的元素蝶俱。
示例 1:
給定 nums = [3,2,2,3], val = 3,
函數(shù)應該返回新的長度 2, 并且 nums 中的前兩個元素均為 2班利。
你不需要考慮數(shù)組中超出新長度后面的元素。
示例 2:
給定 nums = [0,1,2,2,3,0,4,2], val = 2,
函數(shù)應該返回新的長度 5, 并且 nums 中的前五個元素為 0, 1, 3, 0, 4榨呆。
考點:雙指針

 public int[] removingElements(int[] numbers, int val) {
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < numbers.length; fastIndex++) {
            if (numbers[fastIndex] != val) {
                numbers[slowIndex] = numbers[fastIndex];
                slowIndex++;
            }
        }
        return numbers;
    }

3.長度最小的子數(shù)組
給定一個含有 n 個正整數(shù)的數(shù)組和一個正整數(shù) s 罗标,找出該數(shù)組中滿足其和 ≥ s 的長度最小的 連續(xù) 子數(shù)組,并返回其長度愕提。如果不存在符合條件的子數(shù)組馒稍,返回 0。
示例:
輸入:s = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數(shù)組 [4,3] 是該條件下的長度最小的子數(shù)組浅侨。
考點:滑動窗口

public int smallestArray(int[] numbers, int target) {
       int i = 0;
       int sum = 0;
       int result = Integer.MAX_VALUE;
       int subLength;

       for (int j = 0; j < numbers.length; j++) {
            sum += numbers[j];
            while (sum>target){
                subLength = j - i + 1;
                result = Math.min(subLength,result);
                sum -= numbers[i++];
            }
       }
       return result == Integer.MAX_VALUE ? 0 : result;
   }

4.螺旋矩陣II
給定一個正整數(shù) n纽谒,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣如输。
示例:
輸入: 3
輸出:
[ [ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ] ]
考點:還原能力

  public int[][] generateMatrix(int n) {
        int[][] arr = new int[n][n];
        int c = 1, j = 0;
        while (c <= n * n) {

            for (int i = j; i < n - j; i++)
                arr[j][i] = c++;
            for (int i = j + 1; i < n - j; i++)
                arr[i][n - j - 1] = c++;
            for (int i = n - j - 2; i >= j; i--)
                arr[n - j - 1][i] = c++;
            for (int i = n -j - 2; i > j; i--)
                arr[i][j] = c++;

            j++;
        }
        return arr;
    }

下集預告:程序員必須掌握的高頻算法題之鏈表(2)

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鼓黔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子不见,更是在濱河造成了極大的恐慌澳化,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳吮,死亡現(xiàn)場離奇詭異缎谷,居然都是意外死亡,警方通過查閱死者的電腦和手機灶似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門列林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑞你,“玉大人,你說我怎么就攤上這事希痴≌呒祝” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵砌创,是天一觀的道長虏缸。 經(jīng)常有香客問我,道長嫩实,這世上最難降的妖魔是什么刽辙? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮舶赔,結果婚禮上扫倡,老公的妹妹穿的比我還像新娘谦秧。我一直安慰自己竟纳,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布疚鲤。 她就那樣靜靜地躺著锥累,像睡著了一般。 火紅的嫁衣襯著肌膚如雪集歇。 梳的紋絲不亂的頭發(fā)上桶略,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音诲宇,去河邊找鬼际歼。 笑死,一個胖子當著我的面吹牛姑蓝,可吹牛的內(nèi)容都是我干的鹅心。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纺荧,長吁一口氣:“原來是場噩夢啊……” “哼旭愧!你這毒婦竟也來了?” 一聲冷哼從身側響起宙暇,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤输枯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后占贫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桃熄,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年型奥,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞳收。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片池充。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缎讼,靈堂內(nèi)的尸體忽然破棺而出收夸,到底是詐尸還是另有隱情,我是刑警寧澤血崭,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布卧惜,位于F島的核電站,受9級特大地震影響夹纫,放射性物質發(fā)生泄漏咽瓷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一舰讹、第九天 我趴在偏房一處隱蔽的房頂上張望茅姜。 院中可真熱鬧,春花似錦月匣、人聲如沸钻洒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽素标。三九已至,卻和暖如春萍悴,著一層夾襖步出監(jiān)牢的瞬間头遭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工癣诱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留计维,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓撕予,卻偏偏與公主長得像鲫惶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗅蔬,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容