首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
sigria
获赞
5
粉丝
0
关注
0
看过 TA
1
男
浙江大学
2019
算法工程师
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑sigria吗?
发布(5)
刷题
sigria
2021-07-08 02:31
算法工程师
题解 | #数组中相加和为0的三元组#
import java.util.*; public class Solution { public ArrayList<ArrayList<Integer>> threeSum(int[] num) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); Arrays.sort(num); int prev = Integer.MIN_VALUE; for (int i = 0; i < n...
0
点赞
评论
收藏
转发
sigria
2021-07-04 02:19
算法工程师
题解 | #大数加法#
注意事项**ascii code:'1'->49所以char c='1' 转化为 int v=1,只需减去48即可即v=c-48; public String solve (String s, String t) { // write code here char[] s1=s.toCharArray(); char[] t1=t.toCharArray(); int ls=s.length(); int lt=t.length(); int len=Math.max(ls,lt)+...
0
点赞
评论
收藏
转发
sigria
2021-07-03 22:44
算法工程师
题解 | #合并两个有序的数组#
只有一个注意事项,java的引用传递是传值的。所以A=C是错的必须使用for循环,依次修改数组对象A中的值,此时才能真正改变实参A public void merge(int A[], int m, int B[], int n) { int[] C=new int[m+n]; int i,j,k; i=j=k=0; while(i<m && j<n){ if(A[i]<B[j]){ C[k++]=A[i++]; ...
0
点赞
评论
收藏
转发
sigria
2021-07-03 18:14
算法工程师
题解 | #最长无重复子数组#
解题思路如下:滑动窗口使用map记录状态,key=数组元素,value=数组下标;使用for循环右移窗口右边界,当map中包含这个key,说明此时子数组出现了重复元素,此时需要移动窗口左边界,即start,移动start的规则为,start=重复元素上一次出现的位置+1,同时更新map中此元素的下标注意:为了防止 start=重复元素上一次出现的位置+1 时出现左移,需要额外增加一个判断,即start =Math.max(start, window.get(key) + 1); public int maxLength (int[] arr) { // write co...
0
点赞
评论
收藏
转发
sigria
2021-07-03 17:36
算法工程师
题解 | #子数组的最大累加和问题#
初始思路: 子数组的起点从0-len,循环len次, 在每次循环中,子数组终点从起点移动到arr[len],计算子数组的和,使用max暂存最大值; 但是这样时间O(n^2)。考虑对计算过程化简: 列出初始暴力思路的计算过程,可以发现,在终点坐标为K位置的子数组的最大值,取决于终点位置为k-1位置的子数组的最大值连接arr[k]和arr[k]的比较; 即 dp[k] = max{ dp[k-1]+arr[k] , arr[k]} 因此 dp[0]=arr[0] dp[1]=max{ dp[0]+arr[1],arr[1]} ...... 以此...
0
点赞
评论
收藏
转发
1
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务