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

让生活步入正轨,记录刷题。

全局:

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

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

x
楼主是个从小到大毅力特别特别差的人。准确地讲是专注力很差。在一个自己讨厌的专业度过了四年常年精力差情绪糟糕。一直认为是自己缺乏兴趣的缘故但是转了专业之后,客观一点讲,我很喜欢算法。但是糟糕的情绪并没有得到缓解反而加重。怀疑有轻度抑郁但是不想看。。。

然后这半年正好要找实习转专业小学鸡真的很痛苦。经常就是有一堆要做的事情压着累计着就是不干。觉得自己很需要找回规律的生活,让自己发奋起来。

日常记录自己刷题的日子和美帝生活。

补充内容 (2018-3-5 04:16):
求解Convert Binary Search Tree to Sorted Doubly Linked List

上一篇:总结一下最近的刷题心得
下一篇:除了leetcode,大家还有什么推荐的刷题网站吗
推荐
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-6 01:05:51 | 只看该作者
全局:
今天抠一个hard扣了一个多小时。。。
做了如雷贯耳的3sum之前用map做的。。后来看指导说two pointer更好。然后也做了很长时间。。。
tp的内部思路好复杂的感觉。debug就十分钟。。。。。。然后最后的速度也没有更快==

class Solution {
   public List<List<Integer>> threeSum(int[] num) {
        Arrays.sort(num);
       List<List<Integer>> res=new ArrayList<>();
       for(int i=0;i<num.length;i++)
           if(i==0||num[i]!=num[i-1])
           {
               int lo=i+1,hi=num.length-1;
               
               while(lo<hi){
                  
                       
                   if(num[i]+num[lo]+num[hi]==0){res.add(Arrays.asList(num[i],num[lo],num[hi]));
                                                 while(lo<hi&&num[hi-1]==num[hi])hi--;
                        while(lo<hi&&num[lo+1]==num[lo])lo++;
                                                 lo++;
                                                 hi--;}
                   else if(num[i]+num[lo]+num[hi]<0)lo++;
                   else hi--;
                  
               }
           }
       return res;
}
}
回复

使用道具 举报

推荐
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 13:20:25 | 只看该作者
全局:
Clone Graph
用时:20分
也是很经典的题,两个月前做过,查了一下应该是看了答案直接放上去的。。。然后这回自己做出来了用bfs。然后看了答案对比了dfs的速度快不少。。。但是bfs逻辑感觉比较直接就是了。。。。
码字略慢结果一compile还是一堆错。。心酸。。。public class Solution {
    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
        if (node==null)return null;
        Queue<UndirectedGraphNode> que=new LinkedList<>();
        Map<UndirectedGraphNode,UndirectedGraphNode> map=new HashMap<>();
        que.offer(node);
        map.put(node,new UndirectedGraphNode(node.label));
        while(!que.isEmpty()){
            UndirectedGraphNode temp=que.poll(),create=map.get(temp);
            
            for(UndirectedGraphNode tgt:temp.neighbors){
                if(!map.containsKey(tgt)){
                 UndirectedGraphNode   createTgt=new UndirectedGraphNode(tgt.label);
                    map.put(tgt,createTgt);
                    create.neighbors.add(createTgt);
                    que.offer(tgt);
                }
                 else create.neighbors.add(map.get(tgt));
            }
        }
        return map.get(node);
    }
}
回复

使用道具 举报

推荐
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-5 04:17:43 | 只看该作者
全局:
Convert Binary Search Tree to Sorted Doubly Linked List
在explore找的题。。。。做了二十分钟然后不对,然而发现没有答案。。。

class Solution {
    Node left;
    Node right;
    public Node treeToDoublyList(Node root) {
        dfs(root);
        right.right=left;
        left.left=right;
        Node head=new Node();
        head.right=left;
        return head;
    }
    public void dfs(Node root){
        if(root==null)return;
        Node LEFT,RIGHT;
    if(root.left==null)LEFT=root;
        else{
            dfs(root.left);
            LEFT=left;
            right.right=root;
            root.left=right;
        }
    if(root.right==null)RIGHT=root;
        else{
            dfs(root.right);
            RIGHT=right;
            left.left=root;
            root.right=left;
        }
        left=LEFT;
        right=RIGHT;
    }
}
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 06:58:30 | 只看该作者
全局:
3/3/18
680 Valid Palindrome II (fb tag)
用时:6分钟。
之前做过没做出来的题,看过答案有印象。

之前并不是没有思路,而是查palindrome习惯性的从中间查,很不好的习惯,因为边界值的问题。直接用two pointer往中间走聪明很多。

分享代码:
class Solution {
    public boolean validPalindrome(String s) {
        int left=0,right=s.length()-1;
        char[] arr=s.toCharArray();
        while(left<right){
            if(arr[left]!=arr[right])return check(arr,left+1,right)||check(arr,left,right-1);
            left++;right--;
        }
        return true;
    }
    public boolean check(char[] arr,int left,int right){
        while(left<right){
            if(arr[left]!=arr[right])return false;
            left++;right--;
        }
        return true;
    }
}
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 07:13:39 | 只看该作者
全局:
3/3/18
Maximum Size Subarray Sum Equals k(fb tag)
用时:十分钟。
依然是我之前没做出来的题(两次),这次算正式记住了解法和细节。
实际做还是非常不一样的因为会有很多不会注意的细节。这次我就卡在了没有一开始 map.put(0,-1)了。以后会注意。
这个解法也是非常有美感,强烈推荐大家做一做!!!大神无视我。
然后我延伸了一下,maxsum简直可以推广到所有子数组求和的遍历啊。。。min的max的,情况列举的。(用一个list<String>??)

代码:
class Solution {
    public int maxSubArrayLen(int[] nums, int k) {
        int sum=0,max=0;
        Map<Integer,Integer> map=new HashMap<>();
        map.put(0,-1);
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];
            if(map.containsKey(sum-k))max=Math.max(max,i-map.get(sum-k));
            if(!map.containsKey(sum))map.put(sum,i);
        }
        return max;
    }
}
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 07:48:28 | 只看该作者
全局:
本帖最后由 鹿鹿鹿鹿鹿鹿鹿 于 2018-3-4 08:14 编辑

Read N Characters Given Read4(fb tag)
在没看懂题意下做了20分钟。。。过会研究下答案。。。

====================================
看了答案还是无法理解意图。。。略无语。。。。
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 12:34:29 | 只看该作者
全局:
Merge Two Sorted Lists
服了,最最简单的题各种脑袋秀逗做了十五分钟。。。。。
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 12:48:16 | 只看该作者
全局:
Search in Rotated Sorted Array(fb tag)
用时:十分钟。
嗯,攻克binary search的时候到了。。。真的是无比无比无比classic的题。。。然而之前几次都没做出来。
就各种算临界啊我的天。。。
代码:
class Solution {
    public int search(int[] nums, int target) {
        int left=0,right=nums.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(nums[mid]==target)return mid;
            if(nums[left]<=nums[mid])
                if(target<nums[mid]&&target>=nums[left])right=mid-1;
                else left=mid+1;
            else if(target>nums[mid]&&target<=nums[right])left=mid+1;
                else right=mid-1;
        }
        return -1;
    }
}
回复

使用道具 举报

🔗
outlooker 2018-3-4 14:23:06 | 只看该作者
全局:
然鹅,咸鱼们首先需要一个来自美帝的AD~
回复

使用道具 举报

🔗
 楼主| 鹿鹿鹿鹿鹿鹿鹿 2018-3-4 23:04:56 | 只看该作者
全局:
outlooker 发表于 2018-3-4 14:23
然鹅,咸鱼们首先需要一个来自美帝的AD~

哈哈哈,我当时接了保底校的拒信然后又来了七八个拒信才等到offer。。。。
回复

使用道具 举报

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

本版积分规则

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