力扣生涯
Martin_Tai
这个作者很懒,什么都没留下…
展开
-
力扣-206:反转链表 [手写步骤]
解题思路代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x),原创 2021-07-16 00:55:38 · 147 阅读 · 0 评论 -
leetcode Line 14: Char 5: fatal error: control may reach end of non-void function [Solved]
错误症状原因这个错误提示说 返回值的问题 是void? 然而方法是有返回值的 所以要进行返回一个值解决加上返回值 return原创 2021-07-15 22:47:31 · 188 阅读 · 0 评论 -
力扣-405. 数字转换为十六进制数
解题思路看到discussion中most vote的题解之后,我震惊????了!!用string HEX 代替我写的unorder_map<int,string>可以将全局的变量写在Solution的上面,我一直以为只能写在Solution里面确定是十进制转十六进制?我怎么觉得是十进制转二进制,然后二进制转十六进制代码const string HEX = "0123456789abcdef";class Solution {public: string toHex(原创 2021-07-14 11:09:13 · 257 阅读 · 0 评论 -
力扣168-Excel表列名称
力扣168解题思路规律很简单就是26个字母 进行除法和求余A-ZAA-AZBA-BZ…ZA-ZZAAA-AZZBAA-BZZ…本质上就是数数【26进制的数数 或者理解成十进制转为26进制】,从A数到Z,然后加1变成AA即Z+1 = A除法是为了计算处于第几段A-Z区间求余是为了确定在A-Z的那个字母运用divide and conquer的思想,大的数除掉26之后变成小的数 然后递归调用这里的减一可以理解为 因为A表示1 所以 减1 表示到A的距离代码class Solu原创 2021-07-14 11:07:31 · 179 阅读 · 0 评论 -
算法复杂度计算总结
logN<N<NlogN<n2<n! logN < N < NlogN < n^2 < n! logN<N<NlogN<n2<n!原创 2021-07-14 09:12:36 · 84 阅读 · 0 评论 -
力扣191-位的个数 使用位运算击败了100%的用户
力扣191-位的个数解题思路1011 判断有多少个1先1011 与 1 就可以判断末位是否为1 因为1011& 00010001然后1011 向左移位变成0101重复这个过程知道n为0代码class Solution {public: int hammingWeight(uint32_t n) { int count = 0; while (n!=0) { u_int32_t re = n & 1;原创 2021-07-11 01:29:20 · 188 阅读 · 0 评论 -
力扣171-Excel表加序号
力扣171解题思路进制转换 26进制转10进制代码class Solution {public: int titleToNumber(string columnTitle) { int result = 0; int size = columnTitle.length(); for (int i = 0; i<size;i++){// cout<<columnTitle[i]<<":"&l原创 2021-07-11 01:00:40 · 179 阅读 · 0 评论 -
力扣111-最小深度:直白的递归打败了99.79%的用户
力扣111-最小深度解题思路这道题不能简单理解为如果根节点不为空,然后计算左子树的最小深度left,计算右子树的最小深度然后比较两者,返回最小值+1最小的情况要注意!!!如果左子树为空右子树不为空,那按照上面的逻辑最小深度为左子树深度0 + 1这样就不正确了所以两个子树都为空,那么返回1如果有一个子树为空,那么返回另一个非空子树的深度 + 1即可如果两个子树都不为空,那么返回最小的深度 + 1如果根节点为空,那么返回0代码/** * Definition for a bina原创 2021-07-10 22:55:48 · 99 阅读 · 0 评论 -
队列,我小看了你!!!
力扣101解题思路平时使用vector比较多,反而将队列给生疏了。在练习了102-二叉树的层序遍历之后,再写这道题,能够更好的明白队列的使用。好像队列和树相结合的运用比较多。队列的特点就是先进先出。就相当于告诉内存 hey body,我现在还不知道我要怎么处理这些数据,但是我知道某个点我会来处理的。你要在我需要处理的时候,按照我给你的顺序给我哦!我突然明白循环不变量是什么了。循环不变量是因为循环结构中,需要保持处理步骤可迭代,即可循环处理。而不单单指的是某个变量。Am i right??原创 2021-07-07 23:47:15 · 124 阅读 · 2 评论 -
力扣102-二叉树的层序遍历 背下来
力扣102 二叉树的层序遍历解题思路使用queue进行层序遍历,queue保存着当前层的所有结点count表示当前层的所有结点的个数。不能用q.size()来替换,因为在while循环中需要将当前层的节点的孩子结点同时进队列,这样导致每层的数量不正确。顺序:将根节点入队,count为1-表示当前层只有一个节点循环处理该队列,直到队列为空取队列头,将该节点的孩子节点入队每层的节点信息保存在row_nodes中,count减一至此,当前节点已经没用了,抛出pop判断count是否为0如果原创 2021-07-05 10:03:35 · 81 阅读 · 0 评论 -
力扣112-路径总和-递归
112-路径总和解题思路树的题很大程度上要使用到递归。本质上这道题可以转换为寻找target值,因为已知targetsum值,只需要减去node的val值,即为target值和two sum差不多的想法。考虑基准情况,如果root为空,则返回false如果只有root一个节点,那么判断root的val是否等于target即可。其中,只有一个节点的条件是左子树为空,右子树为空。其他情况看看左子树找不找的到,右子树找不找得到。代码/** * Definition for a binary t原创 2021-07-04 22:46:52 · 148 阅读 · 0 评论 -
力扣136-只出现一次的数字 XOR异或解法
136-只出现一次的数字解题思路自己先尝试着解这道题,基于我现在的认知,能想到的就是如果测试数据为 4 1 2 1 2先排序,1 1 2 2 4由于题目出现的是除了单独的那个数其他都出现两次。所以只需要判断当前的数和后面的数是否一样即可,如果一样,则跳过这两个数,不一样就是单独的那个数。这里只需要注意最后一个数的处理就可以了,即当前的数为2 后面的那个数也为2 那下次循环就会直接到4但是4之后再也没有其他的数,所以4此时就是单独的数。即最后返回最后一个数即可。时间复杂度为O(nlogn +原创 2021-07-04 22:38:38 · 129 阅读 · 0 评论