https://leetcode.com/PRoblems/remove-element/
算法思想:Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't matter what you leave beyond the new length.
這道題跟"Merge Two Sorted Lists"是相似的。
1)定義兩個pointers: i 和j。i指向第一個元素,j指向最后一個元素;定義一個元素來計算新數組的長度,初始化為原始數組的長度
2)若i指向的元素等于給定的value,那么就將i指向的這個值替換為j指向的值,然后j就往前移動一個,并且新的數組的長度需要減一個;若i指向的元素跟value不相等,那么i就繼續往前移動。
3)i在j的后面的時候,跳出循環
程序清單:public class Solution { public int removeElement(int[] nums, int val) { int length = nums.length; if (length <= 0) { return length; } int i = 0; int j = length - 1; int newLen = length; do{ if (nums[i] == val) { nums[i] = nums[j]; newLen--; j--; } else { i++; } }while(i<=j); return newLen; }}新聞熱點
疑難解答