leetcode-第27題-移除元素

2020-09-09 97牛肉麵

//給你一個數組 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。//注意這五個元素可為任意順序。//你不需要考慮數組中超出新長度後面的元素。// 說明:// 為什麼返回數值是整數,但輸出的答案是數組呢?// 請注意,輸入數組是以「引用」方式傳遞的,這意味著在函數裡修改輸入數組對於調用者是可見的。// 你可以想像內部操作如下:// nums 是以「引用」方式傳遞的。也就是說,不對實參作任何拷貝//int len = removeElement(nums, val);// 在函數裡修改輸入數組對於調用者是可見的。// 根據你的函數返回的長度, 它會列印出數組中 該長度範圍內 的所有元素。//for (int i = 0; i < len; i++) {//    print(nums[i]);//}// Related Topics 數組 雙指針// 597 0package com.zqh.leetcode.editor.cn;//Java:移除元素//j 是為了記錄最後相等的索引值,遇到不相等的時候,j就不會加了,然後又遇到相等的。就會覆蓋最後一個j的索引位置的值,所以j索引前面的值與對比值肯定不相等的public class P27RemoveElement { public static void main(String[] args) { Solution solution = new P27RemoveElement().new Solution(); // TO TEST int[] nums = new int[]{0, 1, 2, 2, 3, 0, 4, 2}; int var = 2; nums = new int[]{3, 2, 2, 3}; var = 3; System.out.println(solution.removeElement(nums, var)); } //leetcode submit region begin(Prohibit modification and deletion) class Solution { public int removeElement(int[] nums, int val) { int j = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != val) { nums[j] = nums[i]; j++; } } return j; } }//leetcode submit region end(Prohibit modification and deletion)}

相關焦點

  • 「Leetcode簡潔筆記」第27題:移除元素
    這也是簡單呢,[翻白眼](感覺出題官有點水,怎麼跟上一題那麼像)本文答案參考自leetcode官方題解。又是原地修改。【方法1】同樣是快慢指針(跟上一題很像,但代碼編寫順序略有不同)快指針每次都向前走慢指針進行判斷:如果快指針指向的元素與慢指針指向的元素 相等,則什麼也不做(慢指針不動),直接進入下一輪循環
  • 數組:就移除個元素很難麼?
    移除元素想要高效的話,不是很簡單!編號:27. 移除元素給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後數組的新長度。元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。示例 1:給定 nums = [3,2,2,3], val = 3,函數應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。你不需要考慮數組中超出新長度後面的元素。
  • 「Leetcode簡潔筆記」第26題:刪除排序數組中的重複項
    簡單的喲 (^U^)ノ~YO本文答案參考自leetcode官方題解。快是因為每次都 無條件 地向前遍歷慢是因為每次都要先 判斷是否符合條件 才向前走在這道題中,(兩個指針當然是從下標0處開始遍歷的啦~)快指針每次都向前走慢指針進行判斷:如果
  • leetcode刷題小結(一)
    leetcode有鍊表, 指針, 棧, 堆, 字符串, 二叉樹, 遞歸, 動態規劃等, 今天想講的是棧.我用幾個leetcode題目講一下棧的實戰訓練. 輸入: &34;輸出: true這道題在leetcode中的難度屬於簡單級別. 讓我們看看怎麼做.1) 用自己的白話來說, 其實就是一對括號只能包含或被包含, 而不能單個括號嵌套在其他括號裡面. 而且括號的類型要一致. 2) 然後棧的話我們用一個先進後出的結構.
  • leetcode-第7題-整數反轉
    // Related Topics 數學 // 2031 0package com.zqh.leetcode.editor.cn;//Java:整數反轉public class P7ReverseInteger { public static void main(String[] args) { Solution solution = new P7ReverseInteger
  • LeetCode基礎算法題第179篇:將每個元素替換為右側最大元素
    技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後到中級難度,最後到hard難度全部完。將每個元素替換為右側最大元素(Replace Elements with Greatest Element on Right Side)問題描述:給你一個數組 arr ,請你將每個元素用它右邊最大的元素替換,如果是最後一個元素,用 -1 替換。完成所有替換操作後,請你返回這個數組。
  • leetcode-第26題-刪除排序數組中的重複項
    //給定一個排序數組,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。 // 不要使用額外的數組空間,你必須在 原地 修改輸入數組 並在使用 O(1) 額外空間的條件下完成。
  • Leetcode階段總結:第1~5題
    leetcode刷著刷著就索然無味了,那就先總結一下吧([笑哭])第1題:兩數之和這道題要我們在一串數字中找出相加等於某個數的兩個數。第2題:兩數相加這道題需要我們提取兩個鍊表中的數字,然後相加,再將這個和構造成另一個鍊表。要點1:我們可以在遍歷鍊表時 同時 將各個位數上的數相加(注意要進位)。
  • Leetcode每日一題378. 找出有序矩陣中第K小的元素
    對於leetcode編程題,想要取得最優解,一定要充分利用題目中的條件。先看題目給的矩陣性質:每行每列均按升序排列很容易想到的結論:n * n 的矩陣中 matrix[0][0] 是最小值,matrix[n - 1][n - 1] 是最大值正向思維:直接排序,找到第k小的元素;逆向思維:對於矩陣中每個元素 matrix[i][j],判斷小於等於該值的元素總個數 sum,如果 sum
  • 「Leetcode簡潔筆記」第14題:最長公共前綴
    本文答案參考自leetcode官方多解 警告!這題的難度是 簡單,但是解法有很多(看這篇幅還以為是難題[捂臉])【方法1】依次比較【時間複雜度:O(m*n) 空間複雜度 O(1)】比較字符串1和字符串2,獲取它們的最長公共前綴,記為 prefix
  • leetcode-第38題-外觀數列
    //給定一個正整數 n(1 ≤ n ≤ 30),輸出外觀數列的第 n 項。 // 注意:整數序列中的每一項將表示為一個字符串。// 「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。
  • LeetCode移除元素&實現strStr()&兩數相除
    移除元素給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後數組的新長度。不要使用額外的數組空間,你必須僅使用 O(1) 額外空間並 原地 修改輸入數組。元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
  • leetcode-第28題-實現strStr()
    // 對於本題而言,當 needle 是空字符串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。// Related Topics 雙指針 字符串 // 565 0package com.zqh.leetcode.editor.cn;//Java:實現 strStr()public class P28ImplementStrstr { public static void main(String[] args) { Solution solution = new P28ImplementStrstr
  • leetcode-第66題-加一
    // 最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。// 你可以假設除了整數 0 之外,這個整數不會以零開頭。// 示例 1:// 輸入: [1,2,3]//輸出: [1,2,4]//解釋: 輸入數組表示數字 123。// 示例 2:// 輸入: [4,3,2,1]//輸出: [4,3,2,2]//解釋: 輸入數組表示數字 4321。
  • leetcode-第1題-兩數之和
    但是,數組中同一個元素不能使用兩遍。// 示例:// 給定 nums = [2, 7, 11, 15], target = 9//因為 nums[0] + nums[1] = 2 + 7 = 9//所以返回 [0, 1]// Related Topics 數組 哈希表// 8674 0package com.zqh.leetcode.editor.cn;import java.util.Arrays;import java.util.HashMap
  • 「Leetcode簡潔筆記」第16題:最接近的三數之和
    本文答案參考自leetcode官方題解這個可以參考上一題【方法1】還是比雙重for循環更暴力的三重for循環【時間複雜度 O(n^3) 空間複雜度 O(1)】啊這個,不用介紹了,數字一多就會超過時間限制了~
  • LeetCode基礎算法題第182篇:一維數組的運行總和
    技術提高是一個循序漸進的過程,所以我講的leetcode算法題從最簡單的level開始寫的,然後到中級難度,最後到hard難度全部完。比較簡單的方法就是,首先將原數組的第一個元素賦值給要返回數組,作為第一個元素;然後從第二個元素開始,其元素的值不斷的累加上一個元素的值。很簡單。
  • LeetCode|算法|筆記:第32題:最長有效括號
    啊 又是困難 [大哭]本文答案參考自leetcode官方題解和網友的妙招。題目描述給定一個只包含 '(' 和 ')' 的字符串,找出最長的包含有效括號的子串的長度。s[ i - dp[i - 1] - 1] = ′ ( ′ , 則 dp[i] = dp[i−1] + dp [i − dp[i −1] − 2 ] + 2這看得我快眼瞎了[捂臉]【方法2】棧棧啊,這個數據結構在 判斷括號是否有效 那題也有出現
  • 「Leetcode簡潔筆記」第24題:兩兩交換鍊表中的節點
    本文答案參考自leetcode官方題解。這道題跟前面的【第21題:合併兩個有序鍊表】一樣,也是分遞歸和迭代解法。
  • 劍指Offer 62.圓圈中最後剩下的數字-leetcode
    題目難度: 簡單原題連結例如,0、1、2、3、4 這 5 個數字組成一個圓圈,從數字 0 開始每次刪除第 3 個數字,則刪除的前 4 個數字依次是 2、0、4、1,因此最後剩下的數字是 3。, 並從原列表中移除它.