(LeetCode系列)刷题记

两个全排列的题目

第一道题

ZWdEW0

golang刷回溯遇到的坑

情况说明今天在做LeetCode-46题,DFS深搜写完,最后结果愣是不对,中途调试发现每次满足结束递归条件时得到的结果都是对的,但是后面一有满足条件就会造成最终的结果不对。 下面是46题的错误代码,中途调试打印cur可以正确打印,但是打印ret每次都会改变 1234567891011121314151617181920212223242526272829303132333435363738...

(LeetCode系列)242字母易位词

字母易位词,指的是两个单词只是字母的排列顺序不同,换言之就是字母的种类数以及字母出现的次数都一致 我们重点只需要验证 字母出现的次数以及字母的种类数是否一致 排序 sorted() 不会改变传入可迭代对象的顺序,而是返回一个排好序的可迭代对象 12def isAnagram(self, s: str, t: str) -> bool: return sorted(s) == sor...

(LeetCode系列)7整数反转

题意仔细审题,两个关键点 32位有符号整数,需要考虑负数如何处理 题中给的注意,考虑是否溢出 解法一:逆序累加我们将负数乘以-1,与正数统一处理,之后计算反转的结果之后再确认是否需要乘以-1 报错的代码 123456# 第一次提交:报错,错误测试用例,输入的内容经过反转之后超出了32位有符号整数的边界 def reverse(self, x: int) -> int: ...

(LeetCode系列)刷题记

两数相加思路: 分别求出两个链表都有数字时各个数字的和, 如果产生进位,将进位记录在计算下一位的时候加上 如果没有产生进位,移动到下一位 如果有链表为空,那么直接计算剩余链表的数字 与 进位的和 直到最后两个链表都为空,但是还有进位,此时我们还要再给进位分配一个链表的节点 求公共链表之后单独求不为空的链表的解法123456789101112131415def addTwoNumber...

(LeetCode系列)118杨辉三角

解法解法一(自己的解法,蛮力求解,找关系)发现每一行如果大于2个元素两边都用1填充,并且其他位置的元素的关系式如下: ele[i][j] = ele[i-1][j-1] + ele[i-1][j] ele[i][j] = 1 当且仅当j=0或j=i时 12345678910111213141516class Solution: def generate(self, numRow...

(LeetCode系列)191位1的个数

解决方法方法一:一位一位判断 我们对输入的数字从最后一位开始,每次和1进行与运算,之后每次左移1位 为什么每次不右移1位呢? 因为如果对于有符号整数,每次右移我们前面会填充符号位(正数填0负数填1)因此对于后面的计数会有影响,而左移对于有符号整数都只是在右边填充0 区分逻辑右移,逻辑左移与算数右移,算数左移: 逻辑左移=算数左移,右边统一添0 逻辑右移,左边统一添0 算数右移,左...

(LeetCode系列)136只出现一次的数字

解法解法一:暴力每次遍历一个数与后面的数进行比较,如果相等,则此次遍历break,开始遍历下一个数字。 时间复杂度:o(n^2) 空间复杂度:o(n) 解法二:排序时间复杂度:o(nlog2n) 空间复杂度:o(1) 解法三:使用hash表统计出现的次数时间复杂度:o(n) 空间复杂度:o(n) 解法四:使用集合统计出现一次的数字 定义一个新的集合,遍历题中给的数组,第一次出现的数字...