package array; /** * @ProjectName: leetcode * @Package: array * @ClassName: Array27 * @Author: markey * @Description: * ç»å®ä¸ä¸ªæ°ç» 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]); * } * * æ¥æºï¼åæ£ï¼LeetCodeï¼ * 龿¥ï¼https://leetcode-cn.com/problems/remove-element * è使å½é¢æ£ç½ç»ææãåä¸è½¬è½½è¯·èç³»å®æ¹ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã * @Date: 2019/10/17 23:00 * @Version: 1.0 */ public class Array27 { /** * Runtime: 0 ms, faster than 100.00% of Java online submissions for Remove Element. * Memory Usage: 36 MB, less than 100.00% of Java online submissions for Remove Element. * @param nums * @param val * @return */ public int removeElement(int[] nums, int val) { if (nums.length == 0) { return 0; } int i, j; for (i = 0, j = nums.length - 1; i <= j;) { if (nums[i] != val) { i++; continue; } if (nums[j] == val) { j--; continue; } int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; i++; j--; } return j+1; } }