算法高频面试题精讲
保持每日3道面试题的节奏~
HCH996
一边失去,一边在寻找~
展开
-
针对全球的、访问量极大的id生成系统
必须保证用户每次从该系统得到的id是唯一的,而且在概率上毫无碰撞可能直接利用range去控制原创 2020-09-02 18:43:33 · 106 阅读 · 0 评论 -
给定值k的最长子数组长度
(1)给定一个数组,值全是正数,请返回累加和为给定值k的最长子数组长度。(2)给定一个数组,值可以为正、负和0,请返回累加和为给定值k的最长子数组长度。(1)l和r都只能往右滑动,不会回退初始化: l = r = 0如果窗口内[l, r]的和小于k, r++, sum += num[r]如果和等于k,记录窗口大小并视情况更新返回结果值如果和大于k,sum -= num[l], l右边滑(2)必须以每个值为结尾的情况下累积和为k的最长子数组长度利用一个map其中value为累积原创 2020-09-02 18:33:53 · 251 阅读 · 0 评论 -
判断指定字符串是否为合法括号配对串
public boolean isValid(String s){ char[] chas = s.toCharArray(); int count = 0; for(int i = 0; i < chas.length; i++){ if(chas[i] != ')' && chas[i] != '('){ return false; } if(chas[i] == ')' && -- count < 0){ return fal.原创 2020-09-02 17:13:50 · 355 阅读 · 0 评论 -
返回获胜者的分数
有一排正数,玩家A和玩家B都可以看到。每位玩家在拿走数字的时候,都只能从最左和最右的数中选择一个。玩家A先拿,玩家B再拿,两人交替拿走所有的数字。两人都力争自己拿到的数的总和比对方多。请返回最后获胜者的分数。例如∶5,2,3,4玩家A先拿,当前他只能拿走5或者4。如果玩家A拿走5,那么剩下2,3,4。轮到玩家B,此时玩家B可以选择2或4中的一个,如果玩家A拿走4,那么剩下5,2,3。轮到玩家B,此时玩家B可以选择5或3中的一个,…利用动态规划求解public static in原创 2020-09-02 17:06:43 · 166 阅读 · 0 评论