![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法高频面试题精讲
保持每日3道面试题的节奏~
HCH996
一边失去,一边在寻找~
展开
-
针对全球的、访问量极大的id生成系统
必须保证用户每次从该系统得到的id是唯一的,而且在概率上毫无碰撞可能 直接利用range去控制原创 2020-09-02 18:43:33 · 102 阅读 · 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 · 222 阅读 · 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 · 326 阅读 · 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 · 157 阅读 · 0 评论