package array; /** * @ProjectName: leetcode * @Package: array * @ClassName: Array80 * @Author: markey * @Description:80. å é¤æåºæ°ç»ä¸çéå¤é¡¹ II * ç»å®ä¸ä¸ªæåºæ°ç»ï¼ä½ éè¦å¨åå°å é¤éå¤åºç°çå ç´ ï¼ä½¿å¾æ¯ä¸ªå ç´ æå¤åºç°ä¸¤æ¬¡ï¼è¿åç§»é¤åæ°ç»çæ°é¿åº¦ã * * ä¸è¦ä½¿ç¨é¢å¤çæ°ç»ç©ºé´ï¼ä½ å¿ é¡»å¨åå°ä¿®æ¹è¾å ¥æ°ç»å¹¶å¨ä½¿ç¨ O(1) é¢å¤ç©ºé´çæ¡ä»¶ä¸å®æã * * 示ä¾Â 1: * * ç»å® nums = [1,1,1,2,2,3], * * 彿°åºè¿åæ°é¿åº¦ length = 5, å¹¶ä¸åæ°ç»çåäºä¸ªå ç´ è¢«ä¿®æ¹ä¸º 1, 1, 2, 2, 3 ã * * ä½ ä¸éè¦èèæ°ç»ä¸è¶ åºæ°é¿åº¦åé¢çå ç´ ã * 示ä¾Â 2: * * ç»å® nums = [0,0,1,1,1,1,2,3,3], * * 彿°åºè¿åæ°é¿åº¦ length = 7, å¹¶ä¸åæ°ç»çåäºä¸ªå ç´ è¢«ä¿®æ¹ä¸ºÂ 0, 0, 1, 1, 2, 3, 3 ã * * ä½ ä¸éè¦èèæ°ç»ä¸è¶ åºæ°é¿åº¦åé¢çå ç´ ã * 说æ: * * 为ä»ä¹è¿åæ°å¼æ¯æ´æ°ï¼ä½è¾åºççæ¡æ¯æ°ç»å¢? * * 请注æï¼è¾å ¥æ°ç»æ¯ä»¥âå¼ç¨âæ¹å¼ä¼ éçï¼è¿æå³çå¨å½æ°éä¿®æ¹è¾å ¥æ°ç»å¯¹äºè°ç¨è æ¯å¯è§çã * * ä½ å¯ä»¥æ³è±¡å 鍿ä½å¦ä¸: * * // nums æ¯ä»¥âå¼ç¨âæ¹å¼ä¼ éçãä¹å°±æ¯è¯´ï¼ä¸å¯¹å®åå任使·è´ * int len = removeDuplicates(nums); * * // å¨å½æ°éä¿®æ¹è¾å ¥æ°ç»å¯¹äºè°ç¨è æ¯å¯è§çã * // æ ¹æ®ä½ ç彿°è¿åçé¿åº¦, å®ä¼æå°åºæ°ç»ä¸è¯¥é¿åº¦èå´å çææå ç´ ã * for (int i = 0; i < len; i++) { *   print(nums[i]); * } * * æ¥æºï¼åæ£ï¼LeetCodeï¼ * 龿¥ï¼https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii * è使å½é¢æ£ç½ç»ææãåä¸è½¬è½½è¯·èç³»å®æ¹ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã * @Date: 2020/5/5 16:12 * @Version: 1.0 */ public class Array80 { public int removeDuplicates(int[] nums) { int slow = 1; int numOfSame = 1; for (int i = 1; i < nums.length; i++) { if (nums[i] == nums[i-1]) { numOfSame++; } else { numOfSame = 1; } if (numOfSame <= 2) { nums[slow] = nums[i]; slow++; } } return slow; } }