LeetCode27.็งป้คๅ ็ด ๐๐๐๐๐็ฎๅ
้ฎ้ขๆ่ฟฐ
ๅๆ้พๆฅ็่ฟ้๏ผ27. ็งป้คๅ ็ด
็ปไฝ ไธไธชๆฐ็ป nums
ๅไธไธชๅผ val
๏ผไฝ ้่ฆ ๅๅฐ ็งป้คๆๆๆฐๅผ็ญไบ val
็ๅ
็ด ๏ผๅนถ่ฟๅ็งป้คๅๆฐ็ป็ๆฐ้ฟๅบฆใ
ไธ่ฆไฝฟ็จ้ขๅค็ๆฐ็ป็ฉบ้ด๏ผไฝ ๅฟ
้กปไป
ไฝฟ็จ O(1)
้ขๅค็ฉบ้ดๅนถ ๅๅฐไฟฎๆน่พๅ
ฅๆฐ็ปใ
ๅ ็ด ็้กบๅบๅฏไปฅๆนๅใไฝ ไธ้่ฆ่่ๆฐ็ปไธญ่ถ ๅบๆฐ้ฟๅบฆๅ้ข็ๅ ็ด ใ
่ฏดๆ:
ไธบไปไน่ฟๅๆฐๅผๆฏๆดๆฐ๏ผไฝ่พๅบ็็ญๆกๆฏๆฐ็ปๅข?
่ฏทๆณจๆ๏ผ่พๅ ฅๆฐ็ปๆฏไปฅใๅผ็จใๆนๅผไผ ้็๏ผ่ฟๆๅณ็ๅจๅฝๆฐ้ไฟฎๆน่พๅ ฅๆฐ็ปๅฏนไบ่ฐ็จ่ ๆฏๅฏ่ง็ใ
ไฝ ๅฏไปฅๆณ่ฑกๅ ้จๆไฝๅฆไธ:
// nums ๆฏไปฅโๅผ็จโๆนๅผไผ ้็ใไนๅฐฑๆฏ่ฏด๏ผไธๅฏนๅฎๅไฝไปปไฝๆท่ด
int len = removeElement(nums, val);
// ๅจๅฝๆฐ้ไฟฎๆน่พๅ
ฅๆฐ็ปๅฏนไบ่ฐ็จ่
ๆฏๅฏ่ง็ใ
// ๆ นๆฎไฝ ็ๅฝๆฐ่ฟๅ็้ฟๅบฆ, ๅฎไผๆๅฐๅบๆฐ็ปไธญ ่ฏฅ้ฟๅบฆ่ๅดๅ
็ๆๆๅ
็ด ใ
for (int i = 0; i < len; i++) {
print(nums[i]);
}
็คบไพ 1๏ผ
่พๅ
ฅ๏ผnums = [3,2,2,3], val = 3
่พๅบ๏ผ2, nums = [2,2]
่งฃ้๏ผๅฝๆฐๅบ่ฏฅ่ฟๅๆฐ็้ฟๅบฆ 2, ๅนถไธ nums ไธญ็ๅไธคไธชๅ
็ด ๅไธบ 2ใไฝ ไธ้่ฆ่่ๆฐ็ปไธญ่ถ
ๅบๆฐ้ฟๅบฆๅ้ข็ๅ
็ด ใไพๅฆ๏ผๅฝๆฐ่ฟๅ็ๆฐ้ฟๅบฆไธบ 2 ๏ผ่ nums = [2,2,3,3] ๆ nums = [2,2,0,0]๏ผไนไผ่ขซ่งไฝๆญฃ็กฎ็ญๆกใ
็คบไพ 2๏ผ
่พๅ
ฅ๏ผnums = [0,1,2,2,3,0,4,2], val = 2
่พๅบ๏ผ5, nums = [0,1,4,0,3]
่งฃ้๏ผๅฝๆฐๅบ่ฏฅ่ฟๅๆฐ็้ฟๅบฆ 5, ๅนถไธ nums ไธญ็ๅไบไธชๅ
็ด ไธบ 0, 1, 3, 0, 4ใๆณจๆ่ฟไบไธชๅ
็ด ๅฏไธบไปปๆ้กบๅบใไฝ ไธ้่ฆ่่ๆฐ็ปไธญ่ถ
ๅบๆฐ้ฟๅบฆๅ้ข็ๅ
็ด ใ
ๆ็คบ๏ผ
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
ไปฃ็
Java
public int removeElement(int[] nums, int val) {
if(nums == null || nums.length < 1){
return 0;
}
int l = 0;
int r = nums.length - 1;
while(l <= r){
if(nums[l] == val){
//ไบคๆข
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
r--;
}else{
l++;
}
}
return l;
}
Python
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
if not nums:
return 0
l = 0
r = len(nums) - 1
while l <= r:
if nums[l] == val:
nums[l], nums[r] = nums[r], nums[l]
r -= 1
else:
l += 1
return l
C++
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
if(nums.empty()) return 0; // ๅฆๆnumsไธบ็ฉบ๏ผ่ฟๅ0
int l = 0;
int r = nums.size() - 1;
while(l <= r){
if(nums[l] == val){
// ไบคๆขnums[l]ๅnums[r]
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
r--;
} else {
l++;
}
}
return l;
}
};
Go
func removeElement(nums []int, val int) int {
if nums == nil || len(nums) == 0 {
return 0
}
l, r := 0, len(nums)-1
for l <= r {
if nums[l] == val {
nums[l], nums[r] = nums[r], nums[l] // ไบคๆข
r--
} else {
l++
}
}
return l
}