Leetcode刷題筆記(C ) 雙指標

2021-10-08 18:43:01 字數 1561 閱讀 2275

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o(1) 額外空間的條件下完成。

示例 1:

給定陣列 nums = [1,1,2],

函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。

你不需要考慮陣列中超出新長度後面的元素。

示例 2:

給定 nums = [0,0,1,1,1,2,2,3,3,4],

函式應該返回新的長度 5, 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4。

你不需要考慮陣列中超出新長度後面的元素。

說明:為什麼返回數值是整數,但輸出的答案是陣列呢?

請注意,輸入陣列是以「引用」方式傳遞的,這意味著在函式裡修改輸入陣列對於呼叫者是可見的。

你可以想象內部操作如下:

// nums 是以「引用」方式傳遞的。也就是說,不對實參做任何拷貝

int len = removeduplicates(nums);

// 在函式裡修改輸入陣列對於呼叫者是可見的。

// 根據你的函式返回的長度, 它會列印出陣列中該長度範圍內的所有元素。

for (int i = 0; i < len; i++)

class

solution

int left =

0, right =0;

int ans;

while

(rightsize()

)else

} ans = left+1;

return ans;}}

;

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:輸入: [0,1,0,3,12]

輸出: [1,3,12,0,0]

說明:必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

class

solution

while

(fastsize()

)else

}for

(int i=slow; isize()

; i++)}

};

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。

不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 o(1) 的額外空間解決這一問題。

你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。

示例 1:

輸入:[「h」,「e」,「l」,「l」,「o」]

輸出:[「o」,「l」,「l」,「e」,「h」]

示例 2:

輸入:[「h」,「a」,「n」,「n」,「a」,「h」]

輸出:[「h」,「a」,「n」,「n」,「a」,「h」]

class

solution}}

;

leetcode刷題 雙指標

使用雙指標,乙個指向最左邊,乙個指向最右邊,判斷與目標target的大小關係 public int twosum int numbers,int target else if numbers l numbers r else return newint 0 題目 給定乙個非負整數 c 你要判斷是否存...

leetcode刷題 雙指標

給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不可以重複使...

leetcode刷題 c 演算法 1雙指標

首先介紹c 中的指標語法表示和迭代器的使用 指標 1int h 5 int p h 2 int p newint p 1001 迭代器 vector int aa vector int iterator ie aa.begin 然後介紹雙指標 雙指標,指的是在遍歷物件的過程中,不是普通的使用單個指標...