![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode 程序员面试金典
Drink_Coffee_Cat
It's never too late to learn
展开
-
Python 程序员面试经典 面试题 02.08. 环路检测
解题思路链表是否存在环路检测链表中是否存在环路有一个方法叫做快慢指针法,即设置两个指针从起点同时出发,慢指针每移动一步快指针移动两步,如果存在环路则它们终究会相遇。难道快指针不会“越过”慢指针吗?不会。利用反证法,假设快指针真的 越过 了满指针,且快指针处于位置 i+1,而慢指针处于位置 i,那么在前一步,快指针处于位置 i-1,慢指针也处于位置 i-1,它们相遇了。何时相遇首先,快指针会离慢指针越来越远;后来,经过环路后,快指针会开始 追赶 慢指针,假设这时两者相距 kk 步,那么每.转载 2021-08-14 23:37:56 · 246 阅读 · 0 评论 -
Python 程序员面试经典
面试题 02.07. 链表相交要找的是交点!是指针!class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: lengthA,lengthB = 0,0 curA,curB = headA,headB while(curA!=None): #求链表A的长度 curA = curA.next原创 2021-08-14 23:12:01 · 180 阅读 · 1 评论 -
Python 程序员面试经典 面试题 02.06. 回文链表
简单class Solution: def isPalindrome(self, head: ListNode) -> bool: lst = list() cur = head while cur: lst.append(cur.val) cur = cur.next for i in range(len(lst)//2): if l.原创 2021-08-14 22:56:07 · 96 阅读 · 0 评论 -
Python 程序员面试经典 面试题 02.05. 链表求和
一看就懂class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: num1 = num2 = 0 head = l1 t = 1 while head: num1 += head.val*t t *= 10 head = head.next .原创 2021-08-14 22:31:24 · 203 阅读 · 1 评论 -
Python 程序员面试经典 面试题 02.04. 分割链表
快慢指针class Solution: def partition(self, head: ListNode, x: int) -> ListNode: if not head:return head p = q = head while p: if p.val < x: p.val , q.val = q.val , p.val p , q = p.原创 2021-08-14 21:39:56 · 116 阅读 · 1 评论 -
Python 程序员面试金典 面试题 02.03. 删除中间节点
直接让现在这个节点变成下一个节点就行了class Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val = node.next.val node.next = node.n.原创 2021-08-14 21:15:40 · 124 阅读 · 0 评论 -
Python 程序员面试金典 面试题 02.02. 返回倒数第 k 个节点
笨办法:先遍历链表得出链表长度然后就可以了class Solution: def kthToLast(self, head: ListNode, k: int) -> int: cur = head cnt = 1 while cur.next: cnt += 1 cur = cur.next cur = head for i in range.原创 2021-08-14 21:02:38 · 776 阅读 · 3 评论 -
Python 程序员面试金典 面试题 02.01. 移除重复节点
先放个易于理解的版本(额,不是链表,而是列表),还不是leetcode里那种格式的lst = [1, 3, 3, 3, 2, 1]set_lst = set(lst) //去重,留下该出现的元素lst1 = list(set_lst) //去重后的列表lst2 = [] //空表,用来存放正确顺序的列表for i in range(len(lst)): //遍历要排序的列表 for j in range(len(lst1)): //遍历去重列表 if lst[i] ==.原创 2021-08-09 01:40:52 · 163 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.09. 字符串轮转
先判断长度是否相同,不相同返回false,其次拼接两个s2,则如果是由s1旋转而成,则拼接后的s一定包含s1class Solution: def isFlipedString(self, s1: str, s2: str) -> bool: return len(s1) == len(s2) and s1 in s2 * 2易看懂版本class Solution: def isFlipedString(self, s1: str, s2: str) ->.原创 2021-08-08 03:56:00 · 251 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.08. 零矩阵
很简单,记住为0的元素的下标就行了,我这里用元组保存它们class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ zero_dic = dict() zero_num = 0 for i.原创 2021-08-08 02:32:25 · 173 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.07. 旋转矩阵
解法1-(我也不知道怎么说,观察法?)class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ length = len(matrix) for i in range(length - 1): ..原创 2021-08-08 01:40:39 · 115 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.06. 字符串压缩
class Solution(object): def compressString(self, S): n = len(S) if n <= 1: //如果字符串长度为1直接返回输入字符串 return S S += "$" //在末尾添加一个字符利于边界处理 now, cnt, ret = S[0], 1, "" //now:现在进行判断的字符,cnt:该字符出现的次数,ret为要输出的字符串 .原创 2021-08-08 00:54:57 · 187 阅读 · 0 评论 -
Python 程序员面试金典 1.05. 一次编辑
若长度差如果大于2,则至少需要两次改动才可一致将顺序换为first短,second长当发现不一致时,只有两种情况满足修改一次second多一个,所以判断是否first[i:] == second[i + 1:]second当前元素不一致,后面都相同,所以判断是否first[i+1:] == second[i+1:]class Solution: def oneEditAway(self, first: str, second: str) -> bool: if abs(len(.原创 2021-08-07 03:22:28 · 128 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.04. 回文排列
简单地说一个回文串里字符出现的次数为奇数的字符只能有一个class Solution: def canPermutePalindrome(self, s: str) -> bool: count = dict() num = 0 for char in s: count[char] = s.count(char, 0) for value in count.values(): if value%2 != 0: num +.原创 2021-08-07 02:09:44 · 118 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.03. URL化
这题目用Python不用动脑子,直接截取字符串用replace函数就行class Solution: def replaceSpaces(self, S: str, length: int) -> str: return S[:length].replace(" ", "%20")原创 2021-08-07 01:27:38 · 106 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.01. 判定字符是否唯一
解法1-暴力解法:双循环class Solution: def isUnique(self, astr: str) -> bool: flag = 0 for i in range(len(astr)): for j in range(i + 1, len(astr)): if astr[i] == astr[j]: flag = 1 break if flag == 1: retur.原创 2021-08-06 23:30:41 · 243 阅读 · 0 评论 -
Python 程序员面试金典 面试题 01.02. 判定是否互为字符重排
首先判断这两个字符串长度是否一致,然后判断这两个字符串是否含有不相同的字符,最后用字典统计每个字符出现的次数进行比较即可class Solution: def CheckPermutation(self, s1: str, s2: str) -> bool: if len(s1) != len(s2): return False else: set_s1 = set(s1) set_s2 = set(s2) if(set_s1 .原创 2021-08-07 00:53:39 · 192 阅读 · 0 评论