2.排列硬币
class Solution:
def arrangeCoins(self, n: int) -> int:
res =1
while res<=n:
n-=res
if n == 0:
return res
res +=1
return res-1
3.分糖果
class Solution:
def distributeCandies(self, candyType: List[int]) -> int:
res = []
for i in candyType :
if len(res)!=len(candyType)/2 and i not in res:
res.append(i)
return len(res)
4.递增的三元子序列
class Solution:
def increasingTriplet(self, nums: List[int]) -> bool:
small, mid = max(nums), max(nums)
for num in nums:
if num <= small:
small = num
elif num <= mid:
mid = num
else:
return True
return False
总结
–
欠着。。。。。。
2021-11-2
=========
题目
–
1.值相等的最小索引
2.超过经理的收入工
3.组合总和
4.找出临界值之间的最小和最大距离
题解
–
1.值相等的最小索引
本题就是一个循环加上一个除于就可以了!!!
2.超过经理的收入工
SQL需要把同一个表用两次,分别命名不同的名字,然后最后来用where找出大于经理的员工!
3.组合总和
本题就是一个经典的回溯加剪枝,这个真的是经典的不能在经典的一个题!!!
我给大家看一下我画的图:
忽略手稿!!!(字太丑)
4.找出临界值之间的最小和最大距离
本题是上周周赛的第二题,一个链表的问题,但是我是把链表里面的数取出来放在数组里面来判断的,判断的两个条件,最后再来筛选!!!
代码
–
1.值相等的最小索引
class Solution:
def smallestEqual(self, nums: List[int]) -> int:
res=[]
for index , i in enumerate(nums):
if index % 10 == nums[index]:
res.append(index)
return min(res) if len(res) else -1
2.超过经理的收入工
SELECT
a.Name as ‘Employee’
FROM
Employee AS a,
Employee AS b
WHERE
a.ManagerId = b.Id
AND a.Salary > b.Salary;
3.组合总和
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
res = []
n = len(candidates)
def trace(res,begin,end,path,tag):
if tag < 0:
return
if tag == 0:
res.append(path)
return
for i in range(begin,end):
trace(res,i,end,path+[candidates[i]],tag - candidates[i])
if n == 0:
return []
trace(res,0,n,[],target)
return res
4.找出临界值之间的最小和最大距离
class Solution:
def nodesBetweenCriticalPoints(self, head: Optional[ListNode]) -> List[int]:
nums = []
p = head
while p:
nums.append(p.val)
p = p.next
n = len(nums)
a = []
for i in range(1,n-1):
if nums[i - 1] > nums[i] < nums[i + 1]:
a.append(i)
elif nums[i - 1] < nums[i] > nums[i + 1]:
a.append(i)
if len(a) <2:
return [-1,-1]
max_ = a[-1] - a[0]
min_ = float(‘inf’)
for i in range(1, len(a)):
min_ = min(min_, a[i] - a[i - 1])
return [min_,max_]
总结
–
最近感觉有点累了不知道为啥,可能因为专业课多,还要转语言和写博客,时间用不过来,身心疲惫,看着大佬们拿着年薪几十万的offer,总是会有点酸,心里想,我什么时候才能拿着属于自己的offer呢?可能生活在这个快时代,节奏和身心都会被影响吧,太急于求成,我感觉这样并不是很好,一直想找个机会静下来,做自己没有做完的项目,可能等这次活动结束,我就会减少每日的刷题量,来做一些小项目了!!!!
2021-11-3
=========
题目
–
1.Sqrt(x)
2.爬楼梯
3.无重复字符的最长字串
题解
–
1.Sqrt(x)
本题思路是当一个数的算数平方根不是整数时,这个数肯定时大于该算数平方根的整数部分的幂乘积,小于整数部分加一的幂乘积,所以我们就遍历来找到这个整数,就是我们想要的数,然后返回!!
2.爬楼梯
这个题我最开始用的时回溯加剪枝,但是到最后我发现这个在数值等于38的时候超时,所以肯定不能用回溯了,还有一个方法就是用斐波那契数列。
3.无重复字符的最长字串
这个题是我之前没有写出来的一个滑块题,因为它的滑块长度是会变化的,最开始我有点把握不住这个长度,看了一些大佬的题解才写出来的。
由于我的表达太差,我还是直接给大家上官方的题解思路吧。
代码
–
1.Sqrt(x)
class Solution:
def mySqrt(self, x: int) -> int:
if x == 1:
return 1
if x == 0:
return 0
for i in range(x):
if x >=ii and (i+1)(i+1) > x:
return i
2.爬楼梯
class Solution:
def climbStairs(self, n: int) -> int:
def trace(tag,res):
if tag < 0:
return
if tag == 0:
res.append( 1)
return
for i in range(1,3):
trace(tag-i,res)
return len(res)
return trace(n,[])
class Solution:
def climbStairs(self, n: int) -> int:
dp = {}
dp[1] = 1
dp[2] = 2
for i in range(3,n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
3.无重复字符的最长字串
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if not s : return 0
looku = set()
left = 0
max_len = 0
cur_len = 0
for i in range(len(s)):
cur_len += 1
while s[i] in looku:
looku.remove(s[left])
left += 1
cur_len -=1
looku.add(s[i])
if max_len < cur_len:
max_len = cur_len
return max_len
2021-11-4
=========
题目
–
1.有效的完全平方数
2.青蛙跳台阶
3.斐波那楔数列
4.旋转数组的最小数字
5.打印从1到n的最大的n位数
题解
–
1.有效的完全平方数
这个最少需要log(n)的复杂度才能过,o(n)就过不了,我把两个代码都发在下面了。
本题有多种解法,我用的时循环求解,找出最后的i。
2.青蛙跳台阶
这个就是第三题的那个解法,如果用递归的话这个题时会超时的,所以我们用记忆法来求解,大家可以直接看代码。
3.斐波那楔数列
同上。
4.旋转数组的最小数字
在升序表中找到突然下降的那个值就是这个表的最小值。
5.打印从1到n的最大的n位数
太简单了,没有题解。
代码
–
1.有效的完全平方数
//第一个超时
class Solution1:
def isPerfectSquare(self, num: int) -> bool:
if num == 1:
return True
for i in range(1,num//2+1):
if i*i == num:
return True
return False
class Solution:
def isPerfectSquare(self, num: int) -> bool:
x = 1
square = 1
while square <= num:
if square == num:
return True
x += 1
square = x * x
return False
2.青蛙跳台阶
class Solution:
def numWays(self, n: int) -> int:
if n == 0:
return 1
dp = {}
dp[1] = 1
dp[2] = 2
for i in range(3,n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]%1000000007
3.斐波那楔数列
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
return dp[n]%1000000007
3.斐波那楔数列
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-QVWrMK0C-1713772396776)]
[外链图片转存中…(img-RbYAizQs-1713772396777)]
[外链图片转存中…(img-vjkBG01K-1713772396778)]
[外链图片转存中…(img-0Id1Bhmr-1713772396778)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)