本文介绍: 【代码】算法练习04——数组问题。
53. 最大子数组和(动态规划)
https://leetcode.cn/problems/maximum-subarray/
class Solution {
public int maxSubArray(int[] nums) {
int len=nums.length;
int dp[]=new int[len];
dp[0]=nums[0];
int res=nums[0];
for(int i=1;i<len;i++){
dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);
res=Math.max(res,dp[i]);
}
return res;
}
}
56. 合并区间(贪心)
https://leetcode.cn/problems/merge-intervals/
class Solution {
public int[][] merge(int[][] intervals) {
List<int[]> res = new LinkedList<>();
//按照左边界排序
Arrays.sort(intervals,(x,y)->Integer.compare(x[0],y[0]));
//initial start 是最小左边界
int start = intervals[0][0];
//mostRightIndex是最大右边界
int mostRightIndex = intervals[0][1];
for(int i=1;i<intervals.length;i++){
//如果左边界大于最大右边界
if(intervals[i][0]>mostRightIndex){
res.add(new int[]{start,mostRightIndex});
start=intervals[i][0];
mostRightIndex=intervals[i][1];
}else{//如果左边界小于最大右边界
//更新最大右边界
mostRightIndex=Math.max(mostRightIndex,intervals[i][1]);
}
}
res.add(new int[]{start,mostRightIndex});
return res.toArray(new int[res.size()][]);
}
}
189. 轮转数组
https://leetcode.cn/problems/rotate-array/
class Solution {
public void rotate(int[] nums, int k) {
int len=nums.length;
if(k>len){
k=k%len;
}
reverse(nums,0,len-1);
reverse(nums,0,k-1);
reverse(nums,k,len-1);
}
public void reverse(int[] nums, int start,int end){
while(start<end){
int t=nums[start];
nums[start++]=nums[end];
nums[end--]=t;
}
}
}
238. 除自身以外数组的乘积()***
https://leetcode.cn/problems/product-of-array-except-self/
原文地址:https://blog.csdn.net/qq_59708493/article/details/136017223
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_65919.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。