leetcode
万物琴弦光锥之外
复杂的世界需要简单的东西,专业不一定复杂,简单才是终极
展开
-
每日进步一点之灵魂拷问10之今天水一下?
#1算法讲究的复杂度是啥?时空复杂度时间空间每道算法题多思考优化复杂度#2算法从 二叉树 开始#3数据结构有哪些?#4基本物理数据结构为?数组和链表#5逻辑数据结构?原创 2022-02-19 22:29:08 · 9311 阅读 · 0 评论 -
剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
前 n 个数字二进制中 1 的个数题目解法i&i-1: 去掉低位的一个12 bin(int)方法题目输入: n = 2输出: [0,1,1]解释:0 --> 01 --> 12 --> 10解法i&i-1: 去掉低位的一个1比特位计数:(k&=(k-1)实现去掉右边的1)class Solution: def countBits(self, n: int) -> List[int]: res = [0]*(n+1)原创 2021-09-16 14:32:30 · 9100 阅读 · 0 评论 -
剑指 Offer II 001. 整数除法
除法题目解法12题目解法1快速乘法模板把乘数 分解成二进制数,然后 通过移位确定 某二进制位是否为1。然后累计2^n次方用绝对值判断,同或确定flag二分搜索模板l = mid的话,mid = l+r+1 >>1。同理r = mid的话,就mid = l+r>>1class Solution: def divide(self, a: int, b: int) -> int: def fastMul(x, y): # x原创 2021-09-16 14:11:25 · 9258 阅读 · 0 评论 -
剑指 Offer II 016. 不含重复字符的最长子字符串
不重复最长子字符串题目解答题目输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子字符串是 “abc”,所以其长度为 3。解答r表示的即将加入window的右边界class Solution: def lengthOfLongestSubstring(self, s: str) -> int: n = len(s) if n <= 1: return n length = 1原创 2021-09-15 11:15:50 · 9028 阅读 · 0 评论 -
剑指 Offer II 015. 字符串中的所有变位词
所有变位词题目解答123无脑Counter,复杂度较高题目输入: s = “cbaebabacd”, p = “abc”输出: [0,6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的变位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的变位词。解答1单独枚举第一个window + 判断用数组来标记代替字典class Solution: def findAnagrams(self, s: str, p: str) -> List[原创 2021-09-15 11:13:23 · 9228 阅读 · 0 评论 -
剑指 Offer II 014. 字符串中的变位词
题目输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).题解1 sort字符串对比class Solution: def checkInclusion(self, s1: str, s2: str) -> bool: # 窗口为len(s1),然后对窗口内的以及s1都sort后对比 len1 = len(s1) pattern = "".join(sorted原创 2021-09-14 16:27:34 · 9190 阅读 · 0 评论 -
剑指 Offer II 009. 乘积小于 K 的子数组
输入: nums = [10,5,2,6], k = 100输出: 8解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。题解注意 k <=1时候的问题滑动窗口class Solution: def numSubarrayProductLessThanK(self, nums: List[int], k: int)原创 2021-09-14 15:29:55 · 9199 阅读 · 2 评论 -
剑指 Offer II 012. 左右两边子数组的和相等
题目输入:nums = [1,7,3,6,5,6]输出:3解释:中心下标是 3 。左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/tvdfij著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。依旧是用前缀和原创 2021-09-14 15:22:36 · 9181 阅读 · 0 评论 -
NC17 最长回文子串
1 中心奇偶扩展法1.奇数长度中心扩展设置左右指针,不能超出字符串的边界1.偶数长度中心扩展i,i+1为中心注意length提前定义2.遍历,res = max(odd, even res)得到最终答案# -*- coding:utf-8 -*-class Solution: def getLongestPalindrome(self, A, n): # write code here def expandOdd(i, A):原创 2021-09-10 16:11:00 · 9216 阅读 · 0 评论 -
leetcode15. 三数之和
三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。for循环排重双指针左指针排重右指针排重class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() if len(原创 2021-09-10 13:17:36 · 9152 阅读 · 0 评论 -
NC32 求平方根
1,二分法,二分查找0-x之间的整数,看是否找到## # @param x int整型 # @return int整型#class Solution: def sqrt(self , x ): # write code here # 二分法 l, r = 0, x while l < r: # 0 1 2 mid=1 mid = (l + r) // 2原创 2021-09-01 14:23:00 · 9089 阅读 · 0 评论 -
NC88 寻找第K大
1 无脑sort选第K个a.sort(reverse=True)a[]2 堆,直接无脑调用nlargest(K, a)[-1]import heapqheapq.nlargest(K,a)[-1]3 维护一个大小为K的最小堆建堆:O(n)最终为O(nlogK)不满K个,直接进堆操作满了K个,如果当前元素 > 堆顶元素,那就替换该元素,建堆。这样保证了,最后遍历完毕后,K大小的堆的堆顶存储的就是第K大元素import heapqclass Solution: d原创 2021-08-31 15:35:25 · 9356 阅读 · 0 评论 -
NC40 两个链表生成相加链表
1. 翻转链表先翻转链表解决链表长度不一问题解决最后的carry进位标志# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## # @param head1 ListNode类 # @param head2 ListNode类 # @return ListNode类#class Solution: def addInList(sel原创 2021-08-31 09:53:11 · 9124 阅读 · 0 评论 -
二分查找有序数组中最左边的数
## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## 如果目标值存在返回下标,否则返回 -1# @param nums int整型一维数组 # @param target int整型 # @return int整型#class Solution: def search(self , nums , target ): # write code here if not nums: return -1原创 2021-07-04 18:08:54 · 9326 阅读 · 0 评论 -
判断链表中是否有环
# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## # @param head ListNode类 # @return bool布尔型#class Solution: def hasCycle(self , head ): # write code here if not head: r原创 2021-07-04 17:48:04 · 9107 阅读 · 0 评论 -
leetcode刷题打卡:反转链表
第一种: 遍历中,进行翻转保存备份遍历的p设置pre=None# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): # write code here原创 2021-06-30 20:21:48 · 9225 阅读 · 0 评论