php:从排序数组中删除重复项以及买卖股票的最佳时机问题
思路:使用两个指针,一个快指针遍历整个数组,慢指针在检测到与快指针对应的值不等时,向前移动
- php实现代码:
 
class Solution { /** * @param Integer[] $nums * @return Integer */ function removeDuplicates(&$nums) { $len = count($nums); if($len <=1){ return $len; } $j = 0; //慢指針 for($i=1;$i < $len; $i++){ if($nums[$i] != $nums[$j]){ $nums[++$j] = $nums[$i]; } } return $j+1; } }
int removeDuplicates(int* nums, int numsSize) { if(numsSize <= 1){ return numsSize; } int j = 0; for(int i = 0; i < numsSize; ++i){ if(nums[i] != nums[j]){ nums[++j] = nums[i]; } } return j+1; }
- 类似问题:
 
class Solution { /** * @param Integer[] $prices * @return Integer */ function maxProfit($prices) { $len = count($prices); if($len <= 1) return 0; $sum = $j = 0; for($i = 1; $i < $len; ++$i){ if($prices[$i] <= $prices[$j]){ ++$j; }else{ $sum += $prices[$i] - $prices[$j]; $j = $i; } } return $sum; } }
                    
                
                
            
        
浙公网安备 33010602011771号