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

零基础转码,刷题打卡

全局:

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

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

x
本科是国内机械专业,之后在国内传统制造业工作几年,去年录取了美帝一个信息系统项目,项目里面码课并不是很多,还需要自己努很多力!
目前签证,租房,机票都已经定下来了,就等秋季入学.现在开始定个刷题目标,为自己的转码之路开个好头!
小目标:7月10日之前刷完labuladong从LFU之后的所有题

上一篇:开贴记录刷题历程
下一篇:开帖刷题 给自己加油!现在还有人用C++刷题么?
推荐
 楼主| ilove1919 2021-6-26 00:34:26 | 只看该作者
全局:
3:20完成
98. Validate Binary Search Tree
二叉搜索树的性质 设立最大最小值

3:37完成
700. Search in a Binary Search Tree
二叉搜索树的性质  二分法的思想  BST遍历框架模板

3:57完成
701. Insert into a Binary Search Tree
二叉搜索树性质 二分法 BST遍历框架模板

6:51完成
450. Delete Node in a BST
BST模板  三种情况

回复

使用道具 举报

推荐
 楼主| ilove1919 2021-7-19 02:40:54 | 只看该作者
全局:
今天就搞了个 回溯法 N皇后。。。。debug了一天。。。一直有bug。。。。有大佬可以帮忙看看吗?

class Solution {
    public List<List<String>> solveNQueens(int n) {
        List<List<String>> solutions = new LinkedList<>();
        LinkedList<StringBuilder> track = new LinkedList<>();
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++){
            sb.append('.');
        }
        for(int i = 0; i < n; i++){
            track.add(sb);
        }
        backtrack(solutions, track, 0);
        return solutions;

    }
    public void backtrack(List<List<String>> solutions, LinkedList<StringBuilder> track, int row){
        if(row == track.size()){
            LinkedList<String> list = new LinkedList<>();
            for(int i = 0; i < track.size(); i++){
                list.add(track.get(i).toString());
            }
            solutions.add(new LinkedList<>(list));
            return;
        }
        for(int col = 0; col < track.get(0).length(); col++){
            if(!isValid(track, row, col)) continue;
            track.get(row).setCharAt(col, 'Q');
            backtrack(solutions, track, row + 1);
            track.get(row).setCharAt(col, '.');
        }
    }
    public boolean isValid(LinkedList<StringBuilder> sb, int row, int col){
        for(int i = 0; i < row; i++){
            if(sb.get(i).charAt(col) == 'Q')
            return false;
        }
        for(int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--){
            if(sb.get(i).charAt(j) == 'Q')
            return false;
        }
        for(int i = row - 1, j = col + 1; i >= 0 && j < sb.get(0).length(); i--, j++){
            if(sb.get(i).charAt(j) == 'Q')
            return false;
        }
        return true;
    }
}
回复

使用道具 举报

推荐
 楼主| ilove1919 2021-7-2 01:32:55 | 只看该作者
全局:
20:00~1:00
今天刚看backtrack,被搞懵了。只搞了一题
78. Subsets
还没搞出来,最后不知道为什么装进去的list都是空的
有人能帮忙看下问题在哪吗?头都大了
class Solution {
    List<List<Integer>> ans = new ArrayList<>();
    public List<List<Integer>> subsets(int[] nums) {
        
        List<Integer> track = new ArrayList<>();
        backtrack(nums, 0, track);
        return ans;
    }
    public void backtrack(int[] nums, int start, List<Integer> track){
        ans.add(track);
        for(int i = start; i < nums.length; i++){
            track.add(nums[i]);
            backtrack(nums, i + 1, track);
            track.remove(track.size() - 1);
        }

    }
}
回复

使用道具 举报

全局:
Add me!  guoguojiang
回复

使用道具 举报

🔗
 楼主| ilove1919 2021-6-27 00:41:39 | 只看该作者
全局:
4:03完成
222. Count Complete Tree Nodes
暴力递归 O(N)  利用complete binery tree性质(总有一边是perfect binery tree)

7:48完成
297. Serialize and Deserialize Binary Tree (preorder traverse)
StringBuilder    LinkedList   String.append()   String.split()  Integer.parseInt();

12:36刷了第二遍
297. Serialize and Deserialize Binary Tree (preorder traverse)

今天出去打了会篮球,回来感觉序列化和反序列化有点麻烦,就自己又写了一遍。今天没有完成每天至少刷3题的目标,甚至序列化的题也只写了一个前序遍历,明天把中序后序和层序都补上。原因还是刷题时有点不专心,之后要给每题设定时限。
回复

使用道具 举报

🔗
 楼主| ilove1919 2021-6-28 00:23:05 | 只看该作者
全局:
7:50~ 9:00
吃早餐
后序遍历注意的事项:serialize的时候就是简单按模板把append改在遍历之后,但deserialize不能照搬模板,因为后序遍历之后的String list的头几个元素是null,并且构建二叉树不可能从底部到头部。而是要提取String list的时候从尾部拿出来,然后用root反向先右后左来构建二叉树
中序遍历无法deserialize,因为serialize之后的String List,root在中间,没办法第一个拿出来构建二叉树

9:36~14:54
偷懒看了NBA哈哈哈
吃饭
层序遍历刷了一遍,比较生疏,晚上还要复习一遍

16:37~17:35
复习层序遍历
要补习java里面的数据类型 以及equals()函数

22:00~24:00完成
236. Lowest Common Ancestor of a Binary Tree
总结:非常巧妙运用二叉树后序遍历。

今天进度大部分用来复习,只刷了一个新题。按这进度7.10之前刷完labuladong余下的题够呛。明早起来重新规划一下
回复

使用道具 举报

🔗
 楼主| ilove1919 2021-6-29 00:28:47 | 只看该作者
全局:
又只完成了一题
496. Next Greater Element I
单调栈应用   用map记录
总结:今天继续效率低下。发现自己必须要在清晨一大早精力最好的时候就做一题进入状态,之后的一整天才会效率高点。今天上午就是出去忙了点事情,人变得懒散了点,中午一觉睡到三四点,其实五点就坐在电脑前了,一直到晚上9点多才真正进入状态。从明天开始,大早上起来就要做一题或者看一题思路,即使是简单题也有助于自己进入状态。从目前的进度来看,大概率7.10之前是完不成余下的41题。明天先调整状态一天,看看新的进度如何。
回复

使用道具 举报

🔗
 楼主| ilove1919 2021-6-30 01:11:33 | 只看该作者
全局:
今天白天去了躺外地,一大早在高铁上看了两题的思路,现在来练练
8:10~9:00完成
739. Daily Temperatures
利用昨天联系的单调栈模板   stack里面存放元素的下标  回头要了解下用ArrayDeque()和LinkedList()来实现Deque的区别
9:30~9:55完成
503. Next Greater Element II
题目性质可以将现有数组复制到2倍长    循环数组巧用 i % length不用额外空间
10:00~ 1:00完成
239. Sliding Window Maximum
debug花了好长时间。。。。用内部类实现一个单调队列,主函数里利用滑动窗口来搜索。时间复杂度O(N),空间复杂度O(k窗口长度)
总结:昨天定的计划比较合理,早上起来一定要看题,这样即使后面去忙很多事情,还是能回到刷题的状态来。明天争取一天刷到4题
回复

使用道具 举报

🔗
 楼主| ilove1919 2021-7-1 02:29:40 | 只看该作者
全局:
早上~4:40 完成
234. Palindrome Linked List
可选择的方式:后序遍历单链表  造一条新的反转链表  用栈处理单链表
巧妙的方式,先利用双指针找到后段链表,然后只反转这块,然后再比较前后两段是否相通,相比以上三种最节省空间复杂度
~2:00完成
92. Reverse Linked List II
相当于练了三题:反转整个链表/反转链表前N个元素/反转链表第n到第m个元素
按照书中比较巧妙的递归方式来反转,比较有收获,对递归遍历理解更深了一点,但是时间和空间复杂度上并没有比迭代有优势,空间复杂度是O(N)
回复

使用道具 举报

🔗
yaohongy 2021-7-2 03:35:55 | 只看该作者
全局:
ans.add(track);  --->  ans.add(new ArrayList(track));
回复

使用道具 举报

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

本版积分规则

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