LeetCode刷題06:移除元素

哦嚯嚯,昨天停更了一天?爲啥?
因爲昨天上午在教書啦啦,以後週六週日上午要上課,可能會來不及更新,但是一定會在某一個不要上課的上午趕快更新。
昨天和我的小夥伴去 筆試+面試,因爲我昨天太疲倦了(本性很粗心),我昨天的筆試成績沒有我的小夥伴出色,那個老師直接把我叫過去,溫柔的批評了我一頓,太太太粗心了吧。然後還是給了我offer,表示對我很有期待的。哦豁???
可能是眼緣吧,哎,運氣比較好吧,我也不知道是啥原因,但是當機會來臨的時候,牢牢抓住便是,加油哇!!!

今日題目:
給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後數組的新長度。
不要使用額外的數組空間,你必須僅使用 O(1) 額外空間並 原地 修改輸入數組。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。

示例 1:
給定 nums = [3,2,2,3], val = 3,
函數應該返回新的長度 2, 並且 nums 中的前兩個元素均爲 2。
你不需要考慮數組中超出新長度後面的元素。

示例 2:
給定 nums = [0,1,2,2,3,0,4,2], val = 2,
函數應該返回新的長度 5, 並且 nums 中的前五個元素爲 0, 1, 3, 0, 4。
注意這五個元素可爲任意順序。
你不需要考慮數組中超出新長度後面的元素。

解題思路:
1.建立兩個變量i和j;i用來從頭到尾遍歷整個數組,j的初始值設爲0
2.如果說nums[i]!=value,那麼nums[j++]=nums[i];就相當於在原來數組的基礎上重新賦值,新賦值的元素覆蓋原來賦值的元素

函數代碼:

int removeElement(int *nums,int numsSize,int val)
{
	int i,j=0;
	for(i=0;i<numsSize;i++)
	if(nums[i]!=val)
	nums[j++]=nums[i];
return j;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章