自我监督刷题记录处1

自我监督刷题记录处1

第一篇日记,用于记录刷题的每天进程,因为怕自己又坚持不下去,所以让大家监督。每天3道题,希望能坚持下去。作为95后女程序媛👩‍💻,经验不多,算法不好,所以一直逃避刷题,但年龄到了还是要面对的😭…有经验的大神们如果有更好的解法希望指导下!感恩感恩!❤

Leetcode 1 TwoSum

(Easy Level)

class Solution:
	def twoSum(self,nums,target):
			#创建空字典
			dic = {}
			
			#从nums中取index,value  
			for num1,i in enumerate(nums):
				
				#获取目标值
				num2 = target - num1
				
				#查看目标值是否被保存在新建的字典里
				if num2 in dic:
					
					#有的话返回两个index
					return [dic[num2], i]
				
				#没有的话将num1和它的index存入字典中,以便下次循环时能查看是否在字典中。
				dic[num1] = i
	
  • 运用python 的字典(hashmap),先存后查实现,作为第一题真的很经典。

Leetcode 2 Add Two Numbers

(Medium Level)

class solution:
	def addTwoNumbers(self,l1:ListNode,l2:ListNode):
		'''
		sum:每位数相加的总和加进位(如果前一位有进位,需在后一位计算时加上
		carry: 进位计数器
		dummy & tail:dummy的链表头和链表尾
		'''
		sum = 0
		carry = 0
		dummy = tail = ListNode(0)
		
		#这里我写全了,也可以写成while l1 or l2 or carry,判定是否循环
		while l1 != None or l2 != None or carry != 0:
			
			#计算每个位的两数字之和,carry是进位计数
			sum = (l1.val if l1 else 0) + (l2.val id l2 else 0) + carry
			
			#给tail.next赋值,因为只取sum的各位,所以用取余
			tail.next = ListNode(sum % 10)
			
			#tail进行重新指向
			tail = tail.next

			#计算要进几位
			carry = sum // 10
			
			#分别判断l1,l2是否为空后,重新移动指针赋值
			if (l1 != None:l1 = l1.next
			if (l2 != None:l2 = l2.next
		
		#因为是逆序输出所以用dummy.next做链表头返回链表
		return dummy.next
			

*主要考察链表,python没有链表的数据类型,如果不在leetcode上写的时候不要忘记定义node类~

Leetcode 3 Add Two Numbers==(Medium Level)

(Medium Level)

class solution:
	def lengthOfLongestSubstring(s: str) -> int:
		'''
		cur_length是窗户长
		max_length是用于存储最大值的
		pointer是指向不重复就不移动的str
		list用来存全部不同的
		'''
		cur_length = 0
		max_length = 0
		pointer = 0
		lists = []

		#第一步先把极端情况排除
		if s is None:return 0
		
		#i指针不断向尾部移动
		for i in range (len(s)):
			
			#如进入循环,则必然有一个元素
			cur_length +=1
			
			#check i指针所指的元素是否在lists中
			while s[i] in lists:
				
				#pointer所指元素与i所指相同,so,去重元素
				lists.remove(s[pointer])

				#pointer向前移动一位
				pointer +=1
  				#目前长度减一
				cur_length -= 1
			
			#如不在lists中则加入i所指元素
			lists.append(s[i])

			#对比现长度和max_length的长度,同时也可能对max_length赋值
			if cur_length > max_length:max_length = cur_length

		#返回最长,打完收工....
		return max_length

*这题很明显用sliding window来做,我本来想用enumerate来取index,因为我本人用zip和enumerate不太好,但最后还是选择直接遍历的方法…整体思路很容易想,但长度计算过程中,请记住可能要出现cur_length+1 - max_length的情况。写了几种做法,其他的都太慢超时了😭,什么时候能不这么菜。

  • 完成任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值