您的位置:首页 > 娱乐 > 八卦 > 莱芜信息港_正规医院看男科大概多少钱_如何做推广引流赚钱_seo网上课程

莱芜信息港_正规医院看男科大概多少钱_如何做推广引流赚钱_seo网上课程

2024/12/23 11:21:31 来源:https://blog.csdn.net/m0_73629042/article/details/143216855  浏览:    关键词:莱芜信息港_正规医院看男科大概多少钱_如何做推广引流赚钱_seo网上课程
莱芜信息港_正规医院看男科大概多少钱_如何做推广引流赚钱_seo网上课程

目录

1.买卖股票的最佳时机 II

2.跳跃游戏

3.跳跃游戏 II

 4.H 指数

 5.O(1) 时间插入、删除和获取随机元素

6.除自身以外数组的乘积

 7.加油站

 8.分发糖果

1.买卖股票的最佳时机 II

class Solution {public int maxProfit(int[] prices) {//和1相比,这个可以一直买卖股票,所以可以使用贪心策略,因为局部最优解就是全局最优解//亏钱直接不买卖int profit=0;for(int i=1;i<prices.length;i++){int tmp=prices[i]-prices[i-1];if(tmp>0) profit+=tmp;}return profit;}
}

2.跳跃游戏

最右可达位置维护。

有点类似拼接的路段。

class Solution {public boolean canJump(int[] nums) {int mx=0;for(int i=0;i<nums.length;i++){if(i>mx){//无法到达ireturn false;}//最右可以跳到i+nums[i]mx=Math.max(mx,i+nums[i]);}return true;}
}

3.跳跃游戏 II

class Solution {public int jump(int[] nums) {int ret=0;//已建造的桥的右端点int cur_right=0;//下一座桥的右端点最大值int next_right=0;for(int i=0;i<nums.length-1;i++){next_right=Math.max(next_right,i+nums[i]);//到达已造桥的右端点if(i==cur_right){cur_right=next_right;ret++;}}return ret;}
}

 4.H 指数

class Solution {public int hIndex(int[] citations) {int n=citations.length;//cnt统计引用次数的出现次数int [] cnt=new int [n+1];for(int c:citations){//min是处理>n的引用次数,归为ncnt[Math.min(c,n)]++;}int sum=0;//倒序遍历更好,一旦符合马上接收for(int i=n;;i--){sum+=cnt[i];if(sum>=i){return i;}}}
}

 5.O(1) 时间插入、删除和获取随机元素

class RandomizedSet {static int[] nums=new int[200010];Random random=new Random();Map<Integer,Integer>map=new HashMap<>();int idx=-1;public boolean insert(int val) {if(map.containsKey(val)) return false;nums[++idx]=val;map.put(val,idx);return true;       }public boolean remove(int val) {if(!map.containsKey(val)) return false;int loc=map.remove(val);if(loc!=idx) map.put(nums[idx],loc);nums[loc]=nums[idx--];return true;}public int getRandom() {return nums[random.nextInt(idx+1)];}
}/*** Your RandomizedSet object will be instantiated and called as such:* RandomizedSet obj = new RandomizedSet();* boolean param_1 = obj.insert(val);* boolean param_2 = obj.remove(val);* int param_3 = obj.getRandom();*/

6.除自身以外数组的乘积

class Solution {public int[] productExceptSelf(int[] nums) {//pre表示前缀积;suf表示后缀积;ret=两者之积即可;int n=nums.length;int[] pre=new int[n];pre[0]=1;for(int i=1;i<n;i++){pre[i]=nums[i-1]*pre[i-1];}int[] suf=new int[n];suf[n-1]=1;for(int i=n-2;i>=0;i--){suf[i]=nums[i+1]*suf[i+1];}int[] ret = new int[n];for(int i=0;i<n;i++){ret[i]=pre[i]*suf[i];}return ret;}
}

 7.加油站

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int ret=0;//最小油量int mins=0;//油量int s=0;for(int i=0;i<gas.length;i++){//i处加油,从i到i+1s+=gas[i]-cost[i];if(s<mins){//更新最小油量mins=s;ret=i+1;}}//循环结束后,s 即为 gas 之和减去 cost 之和return s<0?-1:ret;}
}

 8.分发糖果

 

class Solution {public int candy(int[] ratings) {//贪心算法int [] left=new int[ratings.length];int [] right=new int[ratings.length];//都发一颗糖Arrays.fill(left,1);Arrays.fill(right,1);for(int i=1;i<ratings.length;i++){if(ratings[i]>ratings[i-1]) left[i]=left[i-1]+1;}int count=left[ratings.length-1];for(int i = ratings.length - 2; i >= 0; i--) {if(ratings[i] > ratings[i + 1]) right[i] = right[i + 1] + 1;count += Math.max(left[i], right[i]);}return count;     }
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com