查看: 3760| 回复: 24
跳转到指定楼层
上一主题 下一主题
收起左侧

打卡刷题,不想再过Diwali

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 hankok 于 2018-5-1 08:18 编辑

楼主现在十八线小公司,阿三占90%+,起早贪黑快两年,最后成全了三哥。 去年中途换了远程经理,之前的同组人步步高升,我发信给新经理要加薪居然无视,现在被发配帮其他组打杂,快要被该组的三姐经理榨干。虽然已是中年又不想就此养老,在此立flag,11月份之前要跳去一个不过Diwali,薪水x2的公司。遂开始刷题中。

补充内容 (2018-5-3 14:04):
0502
Longest Increasing Subsequence - 两种DP方法, 一种是dp[i]当前位置i的最长增加子串。第二种是dp[i]累计存放递增元素,每次用二分查找找出不小于当前元素的位置,存在则替换,不存在则添加。

补充内容 (2018-5-4 04:44):
0503
3. Longest Substring Without Repeating Characters 这题楼主自己想了两种方法都不得其解。看了clean code handbook上的最简方法,判断当前字符在charmap中记的index>=最左边字符index..

补充内容 (2018-5-9 07:12):
0508
388. Longest Absolute File Path 这题corner cases: 1. should omit the first /  2. Use dummy elem in stack, otherwise deal with empty 3. spaces are treated as normal string

评分

参与人数 1大米 +5 收起 理由
jaydenup + 5 给你点个赞!

查看全部评分


上一篇:欧洲应届生找小伙伴一起刷题
下一篇:督促自己的刷题贴!!干巴爹
 楼主| hankok 2018-5-4 10:03:04 | 只看该作者
全局:
tony.chenjy 发表于 2018-5-4 08:27
可能我对阿三的印象还停留昏天暗地那种落后艰苦的沙俄时代,不过还是祝福楼主心想事成!

没错 我觉得硅谷已经是昏天暗地的班加罗尔了
回复

使用道具 举报

 楼主| hankok 2018-5-10 07:12:17 | 只看该作者
全局:
683. K Empty Slots
1. 容易被数组index弄迷糊
2.

   
  1. public int kEmptySlots(int[] flowers, int k) {
  2.     int days[] = new int[flowers.length+1];

  3.     for(int i=0; i<flowers.length; i++){
  4.         days[flowers[i]] = i+1; // [3,9,2,8,1,6,10,5,4,7] -> [0, 5, 3, 1, 9, 8, 6, 10, 4, 2, 7]
  5.     }

  6.     int res = Integer.MAX_VALUE;
  7.     // 用两个指针,边界比较清楚
  8.     for(int p1 = 1, p2 = k+2; p2<days.length; p1++, p2++){
  9.         // check from between p1 and p2, to see if any violations, if so, break
  10.         int p=p1+1;
  11.         for(; p<p2; p++){
  12.             if(days[p] <= days[p1] || days[p] <= days[p2])
  13.                 break;
  14.         }
  15.         if(p==p2) // 如果k=0, 那么p==p2, 如果k>0, 那么p1,p2之间有一个数,并且通过上面的check,那么p==p2。这个条件其实包含了这两种情况。
  16.             res = Math.min(res, Math.max(days[p1], days[p2]));   // 可能会有多个满足以上check的,比如[1,9,8] (第8天,这里day=max(1, 8)) [6,10,4] (第6天) 都满足[0, 5, 3, 1, 9, 8, 6, 10, 4, 2, 7] k=1的case, 所以要取最小值
  17.     }
  18.     return res==Integer.MAX_VALUE?-1:res;
  19. }
复制代码
回复

使用道具 举报

 楼主| hankok 2018-5-11 05:07:43 | 只看该作者
全局:
681. Next Closest Time
思路是把时间例如23:59转换成23*60+58=1438min, 然后依次(1438+1)%1440, (1439+1)%1440, (1440+1)%1440, ... 循环的同时再把这些分钟数转回时间,判断每个时间的每个数字都包含在String time中,如果是则立即返回。
这里注意,如果从23:59(1439)开始循环,不应该在1440就结束,而是i%1440,然后循环会重新从0开始,deadloop,但是保证会返回。
Test Case:
23:59 边界
00:00 边界
0:00 合法
24:00不合法

  1. public String nextClosestTime(String time) {               
  2.     // convert time to # of minutes
  3.     String hour = time.split(":")[0];
  4.     String min = time.split(":")[1];
  5.     int m = Integer.valueOf(hour)*60 + Integer.valueOf(min);

  6.     // Get next time in the next minute, until found
  7.     for(int i=m+1; ; i++){
  8.         i=i%1440;
  9.         String h1 = String.valueOf(i/60/10);
  10.         String h2 = String.valueOf((i/60)%10);
  11.         String m1 = String.valueOf((i%60)/10);
  12.         String m2 = String.valueOf((i%60)%10);
  13.         //System.out.println(h1+h2+m1+m2);

  14.         if(time.lastIndexOf(h1)!=-1 && time.lastIndexOf(h2)!=-1 && time.lastIndexOf(m1)!=-1 && time.lastIndexOf(m2)!=-1){
  15.             return h1+h2+":"+m1+m2;
  16.         }
  17.         else
  18.             continue;
  19.     }
  20. }
复制代码

补充内容 (2018-5-11 05:09):
else continue可以去掉
回复

使用道具 举报

 楼主| hankok 2018-5-11 08:41:29 | 只看该作者
全局:
340. Longest Substring with At Most K Distinct Characters
这题要注意两个指针,charmap自增不要搞错或者丢掉,否则分分钟越界、死循环。
int k=5;
System.out.println(k--==5); // true , k--无论作为返回值还是放在表达式里,都是先返回当前值。

还有ASCII字符个数是256(128 basic + extended)
  1. class Solution {
  2.     public int lengthOfLongestSubstringKDistinct(String s, int k) {
  3.         int charmap[] = new int[256];

  4.         int distinct = 0;
  5.         int len = 0, maxlen = 0;
  6.         int i = 0, j = 0;

  7.         while (j < s.length()) {
  8.             if (charmap[s.charAt(j)]++ == 0)
  9.                 distinct++;

  10.             while (distinct > k) {
  11.                 if (charmap[s.charAt(i++)]-- == 1)
  12.                     distinct--;
  13.             }
  14.             len = j++ - i + 1;
  15.             maxlen = Math.max(maxlen, len);
  16.         }
  17.         return maxlen;
  18.     }
  19. }
复制代码
回复

使用道具 举报

 楼主| hankok 2018-5-11 09:33:57 | 只看该作者
全局:
482. License Key Formatting
需要处理返回值:
1. 为空的情况
2. 开头多加了一个'-'的情况
  1. class Solution {
  2.     public String licenseKeyFormatting(String S, int K) {
  3.         StringBuilder sb = new StringBuilder();
  4.         int k = 0;

  5.         for (int i = S.length() - 1; i >= 0; i--) {
  6.             char c = S.charAt(i);
  7.             if (c != '-') {
  8.                 sb.insert(0, c);
  9.                 if (++k % K == 0)
  10.                     sb.insert(0, '-');
  11.             }
  12.         }
  13.         String res = sb.toString().toUpperCase();
  14.         return res.indexOf("-") == 0 ? res.substring(1) : res; // 避免用res[0],res为空时会导致越界;处理了上述两种情况
  15.     }
  16. }
复制代码
回复

使用道具 举报

 楼主| hankok 2018-5-11 13:55:47 | 只看该作者
全局:
346. Moving Average from Data Stream
简单题主要复习一下Deque和Queue用法。
1. offer() 和 add() 区别: offer入队失败会返回false,add可能直接就exception了
2. 用Queue更简单,不需要offerFirst()和pollLast()
3. 注意数字个数少于moving average windows length的处理
4. 注意队头出列(减去),队尾插入新数字(加上)
回复

使用道具 举报

推荐
378543248 2018-5-2 06:23:24 | 只看该作者
全局:
楼主求个交流方式,互相鼓励下。
回复

使用道具 举报

推荐
 楼主| hankok 2018-5-3 14:08:21 | 只看该作者
全局:
378543248 发表于 2018-5-2 06:23
楼主求个交流方式,互相鼓励下。

加我wechat - hanchen2011
互相督促。。
回复

使用道具 举报

推荐
 楼主| hankok 2018-5-1 12:20:29 | 只看该作者
全局:
hername 发表于 2018-5-1 12:15
薪水+++可能,不过diwali不可能

去国厂分部 不信还过Diwali
回复

使用道具 举报

🔗
hername 2018-5-1 12:15:05 | 只看该作者
全局:
薪水+++可能,不过diwali不可能
回复

使用道具 举报

🔗
几十卓卓 2018-5-1 23:51:43 | 只看该作者
全局:
非专业小白可以问一个比较蠢的问题嘛… 大家说的刷题都是什么刷什么题?… 打扰了!
回复

使用道具 举报

🔗
 楼主| hankok 2018-5-2 04:17:13 | 只看该作者
全局:
几十卓卓 发表于 2018-5-1 23:51
非专业小白可以问一个比较蠢的问题嘛… 大家说的刷题都是什么刷什么题?… 打扰了!

leetcode / lintcode / careercup (cc189) etc
回复

使用道具 举报

🔗
粗面丸子 2018-5-2 08:38:57 | 只看该作者
本楼:
全局:
LZ加油!
回复

使用道具 举报

🔗
sirius27 2018-5-3 15:43:01 | 只看该作者
全局:
hankok 发表于 2018-5-1 12:20
去国厂分部 不信还过Diwali

求问什么叫diwali
回复

使用道具 举报

全局:
sirius27 发表于 2018-5-2 23:43
求问什么叫diwali

印度的一个节日咯。相当于新年好像。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表