leetcode (Remove Element)
阿新 • • 發佈:2018-11-21
Title: Remove Element 27
Difficulty:Easy
原題leetcode地址:https://leetcode.com/problems/remove-element/
本題的解法與上題26 (Remove Diplicates from Sorted Array)的解法一樣,採用雙指標。
1. 採用雙引用(指標),時間&空間複雜度如下:
時間複雜度:O(n),一層while迴圈,遍歷的是陣列的長度。
空間複雜度:O(1),沒有申請額外的空間。
/** * 雙指標(while迴圈) * @param nums * @param val * @return */ public static int removeElement(int[] nums, int val) { if (nums.length <= 0) { return 0; } int slow = 0; int qick = 0; while (qick < nums.length) { if (nums[qick] != val) { nums[slow++] = nums[qick]; } qick++; } return slow; }
2. 採用雙引用(指標),時間&空間複雜度如下:
時間複雜度:O(n),一層for迴圈,遍歷的是陣列的長度。
空間複雜度:O(n),沒有申請額外的空間。
/** * 雙指標(for迴圈) * @param nums * @param val * @return */ public static int removeElement1(int[] nums, int val) { if (nums.length <= 0) { return 0; } int j = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != val) { nums[j] = nums[i]; j++; } } return j; }