1、原地移除陣列中所有的元素val,要求時間複雜度為o(n),空間複雜度為o(1)
給你乙個陣列 nums 和乙個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須僅使用 o(1) 額外空間並 原地 修改輸入陣列。
元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。oj鏈結
示例:
給定 nums = [3,2,2,3], val = 3,
函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。你不需要考慮陣列中超出新長度後面的元素。
int
removeelement
(int
* nums,
int numssize,
int val)
return dst;
}
2、 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o(1) 額外空間的條件下完成。oj鏈結
示例:
給定陣列 nums = [1,1,2],
函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。 你不需要考慮陣列中超出新長度後面的元素。
int
removeduplicates
(int
* nums,
int numssize)
src++;}
return dst +1;
}
3、 合併兩個有序陣列
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。
說明:
初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。
你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。oj鏈結
示例:
輸入:nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
輸出: [1,2,2,3,5,6]
void
merge
(int
* nums1,
int nums1size,
int m,
int* nums2,
int nums2size,
int n)
else
}while
(end1 >=0)
while
(end2 >=0)
}
4、 旋轉陣列
給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。oj鏈結
示例:
輸入: [1,2,3,4,5,6,7] 和 k = 3
輸出: [5,6,7,1,2,3,4]
解釋:向右旋轉 1 步: [7,1,2,3,4,5,6]
向右旋轉 2 步: [6,7,1,2,3,4,5]
向右旋轉 3 步: [5,6,7,1,2,3,4]
void
reveres
(int
* nums,
int begin,
int end)
}void
rotate
(int
* nums,
int numssize,
int k)
reveres
(nums,
0, numssize -1)
;reveres
(nums,
0, k -1)
;reveres
(nums, k, numssize -1)
;}
5、 陣列形式的整數加法
對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x = 1231,那麼其陣列形式為 [1,2,3,1]
給定非負整數 x 的陣列形式 a,返回整數 x+k 的陣列形式。oj鏈結
示例:
輸入:a = [1,2,0,0], k = 34
輸出:[1,2,3,4]
解釋:1200 + 34 = 1234
void
reverse
(int
* nums,
int begin,
int end)
}int
*addtoarrayform
(int
* a,
int asize,
int k,
int* returnsize)
int x2 =0;
//如果k大於0,獲取k的第i位
if(k >0)
//第i位的結果:每一位的值 + 進製
int ret = x1+x2+next;
//如果結果大於9,需要進製
if(ret >9)
else
//存入第i位的結果到陣列中
addret[reti++
]= ret;
}//如果最高位有進製,需要在存入1
if(next ==1)
//逆置結果
reverse
(addret,
0, reti-1)
;*returnsize = reti;
return addret;
}
北航OJ刷題
bamboo聽說知道了正確的玲瓏數,就能開啟玲瓏陣,穿越時空,然後解鎖乙個滿分瑪麗蘇cp 於是決定停止幻想,現在就去算玲瓏數。玲瓏數是什麼呢?在數列中任意兩個數a i a j 如果i2 a j 那麼a i 和a j 就構成了一對兒玲瓏對。玲瓏數就是玲瓏對的總數。是不是聽起來很簡單?快幫bamboo算...
各大刷題OJ
簡介 以求職為主導的oj 力扣 推薦指數 很多網際網路大廠筆試都是上面的原題,題目有easy midium,hard三個層次,平台有國內版和海外版 安利國內版 力扣會定期舉辦周賽,雙周賽,力扣春季賽等比賽。平台互動性很高,強烈建議多看看題解 討論區。115 l l 洛谷 推薦指數 這是乙個日本的oj...
OJ刷題總結
注意末行是否需要輸出空行,有的不管輸出與否都正確。但有的輸出就錯了,而特麼有的輸出才正確。有關re的思路 指標越界了,除數為0了 用sort 排序會對元素的相對位置發生改變。他的cmp 函式中,如果返回true就不交換,false就交換。bfs中要記得寫vis陣列表示訪問過的狀態。而且,一定要在能訪...