OJ 陣列相關OJ刷題

2021-10-06 04:16:34 字數 2942 閱讀 1870

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陣列表示訪問過的狀態。而且,一定要在能訪...