1. 程式人生 > >給定一個有序陣列,刪除重複內容,使每個元素只出現一次

給定一個有序陣列,刪除重複內容,使每個元素只出現一次

例:

給定nums = [1,1,2],

你的函式應該返回length = 2,前兩個nums元素分別是1和2。
無論你離開新的長度,都沒有關係。

這道題的思路就是採用兩個標記點 number 和 i ,number記錄不重複元素的位置,i從number的下一個開始遍歷陣列,如果i位置的數字等於number位置的數字,說明該數字重複出現,不予處理;如果i位置的數字不等於number位置的數字,說明該數字沒有重複,需要放到l的下一位置,並使number加1。

AC程式碼如下

  1. public class leetcode26 {
  2. public static void main(String[] args)
    {
  3. leetcode26 lt = new leetcode26();
  4. int []num = {0,1,1,2,2,3,3,4};
  5. System.out.println(lt.removeDuplicates(num));
  6. }
  7. // 扔進去AC了他
  8. public int removeDuplicates(int[] nums) {
  9. if (nums.length == 0)
  10. return 0;
  11. //判斷無輸入
  12. int number = 0;//標記計數
  13. for (int i=0
    ; i < nums.length ; i++) {
  14. if ( nums[i] != nums[number] ) {
  15. number++;
  16. nums[number] = nums[i];
  17. }
  18. }
  19. number+=1; //標記+1即為數字個數
  20. return number;
  21. }
  22. }

相關推薦

給定一個有序陣列刪除重複內容使每個元素出現

例:給定nums = [1,1,2], 你的函式應該返回length = 2,前兩個nums元素分別是1和2。 無論你離開新的長度,都沒有關係。 這道題的思路就是採用兩個標記點 number 和 i ,number記錄不重複元素的位置,i從number的下一個開始遍歷陣列,如果i位置的數字等於number位

LeetCode83 給定一個排序連結串列刪除所有重複元素使得每個元素出現

給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode

給定一個包含小寫字母的字串刪除重複的字母每個字母出現。在所有結果中輸出字典順序最小的。

本題源自leetcode 316 --------------------------------------------------------------------------------- 思路:1 用倆個vector 標記字元在串中的出現的次數,以及這個字元是否訪

一個整數陣列有兩個元素出現其他所有元素出現。 找出出現的那兩個元素。(java實現)

一個整數陣列中,有兩個元素只出現一次,其他所有元素均出現兩次。 找出只出現一次的那兩個元素。 思路大概是這樣的:因為除了這兩個只出現一次的數字外,其餘都是成對出現的,有一種運算子,異或運算,兩個相同的數字異或之後為0,所以將陣列中所有的數字依次異或,結果就是這個兩個支出現一

請實現一個函式用來找出字元流中第一個出現的字元。

題目描述 請實現一個函式用來找出字元流中第一個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第一個只出現一次的字元是"g"。當從該字元流中讀出前六個字元“google"時,第一個只出現一次的字元是"l"。 輸出描述: 如果當前字元流沒有存在出現一次的字元,返回#字元。

leetcode 26 Remove Duplicates from Sorted Array(在有序陣列刪除重複元素)

題目要求: 給定排好順序的陣列,在陣列內刪除重複項,使每個元素只出現一次並返回不含重複項陣列的長度。 不要為另一個數組分配額外的空間,保持空間複雜度是O(1)。 Example: 輸入 [1,1,2] 輸出:2 輸入 [0,0,1,1,1,2,2,3,3,4] 輸出:5

[Leetcode] 26、Remove Duplicates from Sorted Array(從有序陣列刪除重複項)題解

Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length. Do not allocate ext

【leetcode】Python實現-26 從有序陣列刪除重複

26 從有序陣列中刪除重複項 描述: 給定一個有序陣列,你需要原地刪除其中的重複內容,使每個元素只出現一次,並返回新的長度。 不要另外定義一個數組,您必須通過用 O(1) 額外記憶體原地修改輸入的陣列來做到這一點。 示例 給定陣列

劍指offer系列(十四)二叉樹的深度平衡二叉樹陣列出現的數字

二叉樹的深度 題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 解題思路: 利用遞迴實現。如果一棵樹只有一個結點,那麼它的深度為1。遞迴的時候無需判斷左右子樹是否存在,因為如果該節點 為葉節點,它的左右

劍指offer——(15)第一個出現的字元 && 陣列重複的數字 && 字元流中第一個不重複的字元

public class Solution { public int FirstNotRepeatingChar(String str) { if(str.length()<=0) return -1; char c[] = str.toC

實現一個算法尋找字符串中出現次數最少的、並且首次出現位置最前的字符 如"cbaacfdeaebb"符合要求的是"f"因為他只出現一次(次數最少)。並且比其他只出現一次的字符(如"d")首次出現的位置最靠前。

出現一次 ole for else 尋找 cti 要求 最小值 一次 實現一個算法,尋找字符串中出現次數最少的、並且首次出現位置最前的字符如"cbaacfdeaebb",符合要求的是"f",因為他只出現了一次(次數最少)。並且比其他只出現一次的字符(如"d")首次出現的位置

136.137. 出現的數字 I. II(簡單中等陣列

 136.給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 示例 1: 輸入: [2,2,1] 輸出: 1 方法一: class Solution: def singleNumber(self, nums):

JS:一個字串由[a-z]組成找出第一個出現的字母

  var mystr = 'asdasdasdwdascxc';         function fis(str){//97             var len = str.length;             var arr = [];             f

經典演算法題1:找出陣列出現的數字其它數字都出現了兩

題目:一個整型數組裡除了一個數字之外,其它的數字都出現了兩次。請寫程式找出這個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)。 分析:由於題目要求時間複雜度為O(n),所以先排序然後比較相鄰數字是否相同的思路被排除。             空間複雜度是O

演算法習題61:找出陣列中兩個出現的數字:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩

找出陣列中兩個只出現一次的數字 題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。 請寫程式找出這兩個只出現一次的數字。要求時間複雜度是 O(n),空間複雜度是 O(1)。 --------------------------------------------

【位運算】找出陣列出現的兩個數字

題目: 一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次,請寫程式找出這兩個出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1). 分析: 由於限制了複雜度,所以要用異或運算來解,什麼是異或? 首先,計算機1個位元組是8位(1Byte=8bit);其次,異

陣列中有三個數出現其它的數恰好出現找出這三個數。

具體的題意如題 當我第一次碰到這類題的時候是宿舍的舍友分享的,當時他說的問題還要簡單一些,具體的題意是"陣列中只有一個數只出現一次,其它的數恰好出現兩次,找出這個數。"  當時我的第一感覺就是要用到快排,因此得出第一種演算法,將陣列進行快排的第一層排序,然後從中間分開,數字

陣列中找出出現的兩個數陣列中其他數都出現

題目:在陣列中有兩個數只出現一次,其他數均出現兩次。問怎樣快速找出這兩個數。 方法一: 直接遍歷整個陣列,建成類似hash的陣列。用原始陣列中元素值當hash陣列下標,出現次數當hash陣列元素值。最後再遍歷一次hash,找出值為1元素的下標。或者不用hash陣列,用ma

一個整數型數組裡除了倆個數字之外其他的數字都出現求找出這倆個出現的數字

思路: 1 倆個相同的數字異或等於0。假設陣列中只有一個只出現一次的數字,因此從頭到尾依次異或陣列中的每個數字,那麼最終的結果就是那個只出現一次的數字。 2 想辦法把陣列分成倆個子陣列,使2個只出現一次的數字分別在兩個子陣列中。 3 分陣列,用依次異或陣列中的每個數,最後的

找出陣列出現的2個數字其他數字都出現2

package lianxi_1; import java.util.ArrayList; import java.util.List; //如果一個數組中只有兩個數字出現1次,其他都是出現2次