LeetCode122.买卖股票的最佳时机II
public int maxProfit(int[] prices) {int buy=-1;int sub=0,max=0;for(int i=0;i<prices.length-1;i++) {if(prices[i]>prices[i+1]) {//第二次遇到山峰,记录前一次的值if(buy!=-1) {max=max+sub;buy=-1;sub=0;}buy=prices[i+1];}else if(prices[i]<=prices[i+1]) {if(buy!=-1) {sub=prices[i+1]-buy;}if(i==0) {buy=prices[i];sub=prices[i+1]-buy;}}}if(sub!=0) {max=max+sub;}return max;}
LeetCode55. 跳跃游戏
public boolean canJump(int[] nums) {int maxReach = 0; // 当前能到达的最远位置for (int i = 0; i < nums.length; i++) {if (i > maxReach) {return false; // 如果当前位置超过了当前能到达的最远位置,则不能到达最后一个位置}maxReach = Math.max(maxReach, i + nums[i]); // 更新能到达的最远位置if (maxReach >= nums.length - 1) {return true; // 如果能到达或超过最后一个位置,返回true}}return false; // 如果遍历完数组都没有到达最后一个位置,返回false}
LeetCode45.跳跃游戏II
public int jump(int[] nums) {int end = 0;int maxPosition = 0; int steps = 0;for (int i = 0; i < nums.length - 1; i++) {maxPosition = Math.max(maxPosition, i + nums[i]); if (i == end) {end = maxPosition;steps++;}}return steps;}
LeetCode1005.K次取反后最大化的数组和
public int largestSumAfterKNegations(int[] nums, int k) {//清除负数Arrays.sort(nums);int i=0;while(i<nums.length&&k>0) {if(nums[i]<0) {nums[i]=-nums[i];i++;k--;}else{break;}}//如果k不为0则继续翻转Arrays.sort(nums);while(k>0) {nums[0]=-nums[0];k--;}int sum=0;for(int q=0;i<nums.length;i++) {sum+=nums[q];}return sum;}