array 用下標來標記index as mark

2021-10-07 01:30:37 字數 1997 閱讀 7357

剛剛寫了bucket sort,就是利用下標來排序。而這裡的一些問題,是用下標來實現別的功能的,比如「標記」,標記某個元素是否出現過。

注意乙個區別,這類問題是:利用「下標」來記錄「元素值本身」,而不是利用「下標」來記錄「下標」(參考73.set matrix zeroes,我原來以為73屬於這一類其實不是)。

題目簡介

442. find all duplicates in an array

index-as-mark

index-as-mark

41. first missing positive

765. couples holding hands

442和448是使用下標標記,需要原陣列有乙個特性,比如「都大於零」,或者比如「都在-10~10範圍內」。這樣「標記」操作可以用「取負數」,或者「乘以11」來實現,被標記的元素可以完全和原來元素區別開來。

乙個陣列,每個元素1 ≤ a[i] ≤ n (n = size of array), 有些出現兩次,有些一次。求在 [1, n] 範圍內哪些數沒有再陣列**現。

input:[4,3,2,7,8,2,3,1],output:[2,3]

把每個數在「正數數列」中應該在的下標處的數翻轉(取負數),不關心那個位置上的數本身的值,只是借用哪個下標而已。然而也不是完全不關心啦,在翻轉之前先看看它是否已經被翻轉過,如果已經被翻轉過,則,bingo!找到乙個duplicate!

原陣列:[4,3,2,7,8,2,3,1]

正數數列:[1,2,3,4,5,6,7,8]

class

solution

nums[index]

=-nums[index]

;//翻轉

}return res;

}}

乙個陣列,每個元素1 ≤ a[i] ≤ n (n = size of array), 有些出現兩次,有些一次。求在 [1, n] 範圍內哪些數沒有再陣列**現。

input:[4,3,2,7,8,2,3,1],output:[5,6]

class

solution

}for

(int i =

0; i < nums.length;

++i)

}return result;

}}

input: [3,4,-1,1] output: 2。找到第乙個缺失的正數。

舉個?:

nums = [3,4,-1,1] -->現有的陣列

nums = [1,2,3,4] -->連續正數陣列

為什麼這個過程可以保證不漏掉任何一位呢?因為我們的i是一位一位往後捋的,一定要保證當前位置的值或者1)是負數,或者2)在正確的位置上,否者不會i++的。

class

solution

}//check first missing num

for(

int i =

0; i < len; i++)}

return len +1;

}}

input: row = [0, 2, 1, 3],output: 1

explanation: we only need to swap the second (row[1]) and third (row[2]) person. 我們認為(0,1),(2,3),…是couple,求最少的swap使得每對couple都挨著。

本來我覺得41.first missing positive和前面442,448類似,都是用下標來標記,或者找與當前值val相對應的下標nums[val-1]的那個元素進行交換。總之我感覺差不多。

用C 實現 數列下標

牛客網演算法周周練15 題號a 題目描述 給出乙個數列 a,求出乙個數列b.其中bi 表示 數列a中 ai 右邊第乙個比 ai 大的數的下標 從1開始計數 沒有找到這乙個下標 bi 就為0,輸出數列b 輸入描述 第一行1個數字 n n 10000 第二行n個數字第 i 個數字為 ai 0 ai 10...

(37) 用標記介面定義型別

所謂標記介面,就是指乙個介面裡面什麼都沒有,只是標記實現類具有某種屬性。例如serilizeable就是這樣乙個介面,他只是告訴jvm,繼承於這個介面的class需要序列化處理,而我們根本不用實現這個介面的方法。優點 1.標記介面定義的型別是由被標記類的例項實現的 標記註解則沒有定義這樣的型別。2....

angular 學用標記 筆記

npm install g angular cli ng serve open ng serve命令會構建本應用 啟動開發伺服器 監聽原始檔,並且當那些檔案發生變化時重新構建本應用。open標誌會開啟瀏覽器 ng update 你還可以使用 cli 命令ng update發現 angular 的最新...