-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0027-remove-element.ts
More file actions
83 lines (69 loc) · 1.86 KB
/
Copy path0027-remove-element.ts
File metadata and controls
83 lines (69 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//Blog:https://www.allenliservice.online/leetcode-js-27-remove-element/
// <strong>Code 1:</strong>
var removeElement = function (nums: number[], val: number): number {
if (!nums) return 0;
let k = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== val) {
//如果nums[i]不等於2
nums[k] = nums[i]; //將原陣列的第k個的值,變更成第i個的值
k++; //k往下一位進行判斷
}
}
return k;
};
/* < strong > FlowChart:</strong>
<pre style='background-color:#ggg'>
i = for loop
k = note
remove val = 2
step.1
i = 0
[0,1,2,2,3,0,4,2] // nums[0] = nums[0]
k = 0 // next
nums[0]
step.2
i = 1
[0,1,2,2,3,0,4,2] // nums[1] = nums[1]
k = 1 // next
nums[0,1]
step.3
i = 2
[0,1,2,2,3,0,4,2]. // remove val
k = 2 // keep k
nums[0,1]
step.4
i = 3
[0,1,2,2,3,0,4,2]. // remove val
k = 2 // keep k
nums[0,1]
step.5
i = 4
[0,1,2,2,3,0,4,2]. // nums[2] = nums[4]
k = 2 // next
nums[0,1,3]
step.6
i = 5
[0,1,2,2,3,0,4,2]. // nums[3] = nums[5]
k = 3 // next
nums[0,1,3,0]
step.7
i = 6
[0,1,2,2,3,0,4,2]. // nums[4] = nums[6]
k = 4 // next
nums[0,1,3,0,4]
step.8
i = 7
[0,1,2,2,3,0,4,2]. // remove val
k = 4 // next
nums[0,1,3,0,4]
</pre> */
// <strong>Code 2:</strong>
var removeElement = function (nums: number[], val: number): number {
let index = nums.indexOf(val);
while (index !== -1) {
nums.splice(index, 1);
index = nums.indexOf(val);
}
return nums.length;
};