程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode -- Remove Element

LeetCode -- Remove Element

編輯:C++入門知識

LeetCode -- Remove Element


題目描述:


Given an array and a value, remove all instances of that value in place and return the new length.


The order of elements can be changed. It doesn't matter what you leave beyond the new length.


就是把數組nums中的值為val的元素放在數組最後,返回新長度。


思路:
1.由於元素已有的順序可以被改變,因此可以使用兩個索引i和j進行兩頭找。j從後往前找值不為val的元素,i從前向後找值為val的元素,直到i與j相遇為止,交互nums[i]和nums[j]
2.然後繼續移動i,直到nums[i]為val為止,此時i的位置即為新長度,返回i即可。






實現代碼:

public class Solution {
    public int RemoveElement(int[] nums, int val) 
    {
        if(nums.Length == 0){
    		return 0;
    	}
    	
    	var i = 0;
    	var j = nums.Length - 1;
    	while(i < j){
    		while(i < j && nums[i] != val){
    			i ++;
    		}
    		while(i < j && nums[j] == val){
    			j --;
    		}
    		if(i < j){
    			var t = nums[i];
    			nums[i] = nums[j];
    			nums[j] = t;
    		}
    	}
    	
    	while(i < nums.Length && nums[i] != val){
    		i++;
    	}
    	return i;
    }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved