力扣
been_through
这个作者很懒,什么都没留下…
展开
-
最长等比子序列
def MaxLen(str): length=len(str) if length==2: return 2 if length==3: return 2+int(str[1]/str[0]==str[2]/str[1]) longest=[[2 for i in range(length)]]*length print(longest) for j in range(length): for i in ran原创 2021-10-17 20:16:42 · 337 阅读 · 0 评论 -
程序员面试金典 面试题 03.02. 栈的最小值
请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); -->原创 2021-03-20 21:49:31 · 112 阅读 · 0 评论 -
程序员面试金典 面试题 03.01. 三合一
三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1 输入:["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"][[1], [0, 1], [0, 2], [0],原创 2021-02-02 09:29:43 · 160 阅读 · 1 评论 -
程序员面试金典 面试题 02.08. 环路检测
给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。示例1输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个原创 2021-01-30 10:24:44 · 118 阅读 · 0 评论 -
程序员面试金典 面试题 02.07. 链表相交
给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个原创 2021-01-27 18:53:00 · 98 阅读 · 0 评论 -
程序员面试金典 面试题 02.06. 回文链表
编写一个函数,检查输入的链表是否是回文的。示例1输入: 1->2输出: false 示例2输入: 1->2->2->1输出: true 解答 python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: de原创 2021-01-27 18:31:55 · 143 阅读 · 1 评论 -
程序员面试金典 面试题 02.05. 链表求和
给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912解答 python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):#原创 2021-01-27 18:14:29 · 137 阅读 · 0 评论 -
程序员面试金典 面试题 02.04. 分割链表
编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8提示:顺序不一定完全相同解答 python3# Definition f原创 2021-01-25 15:31:00 · 94 阅读 · 0 评论 -
程序员面试金典 面试题 02.03. 删除中间节点
实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f解答 python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x原创 2021-01-25 14:02:52 · 81 阅读 · 0 评论 -
程序员面试金典 面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例输入: 1->2->3->4->5 和 k = 2输出: 4解答 python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def kthTo原创 2021-01-25 13:52:13 · 115 阅读 · 0 评论 -
程序员面试金典 面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2输入:[1, 1, 1, 1, 2]输出:[1, 2]解答 python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclas原创 2021-01-24 15:39:12 · 93 阅读 · 0 评论 -
程序员面试金典 面试题 01.09. 字符串轮转
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True示例2输入:s1 = "aa", s2 = "aba" 输出:False解答 python3class Solution: def isFlipedString(self, s1: str, s2: str) -> bool:原创 2021-01-18 14:37:19 · 92 阅读 · 0 评论 -
程序员面试金典 面试题 01.08. 零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例1输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]示例2输入:[ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出:[ [0,0,0,0], [0,4,5,0], [0,3,1,0]]解答 python3class Solution: def setZeroes原创 2021-01-18 13:59:25 · 111 阅读 · 0 评论 -
程序员面试金典 面试题 01.07. 旋转矩阵
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例1给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例2给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,原创 2021-01-17 19:25:51 · 76 阅读 · 0 评论 -
程序员面试金典 面试题 01.06. 字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。解答 python3class Solution: de原创 2021-01-17 17:03:11 · 105 阅读 · 0 评论 -
程序员面试金典 面试题 01.05. 一次编辑
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例1输入: first = "pale"second = "ple"输出: True示例2输入: first = "pales"second = "pal"输出: False解答 python3class Solution: def oneEditAway(self, first: str, second: str) -> boo原创 2021-01-17 15:37:49 · 93 阅读 · 0 评论 -
程序员面试金典 面试题 01.04. 回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)解答 python3class Solution: def canPermutePalindrome(self, s: str) -> bool: n=len(s) m=[];原创 2021-01-16 10:30:21 · 110 阅读 · 0 评论 -
程序员面试金典 面试题 01.03. URL化
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"示例2输入:" ", 5输出:"%20%20%20%20%20" 解答 python3class Solution: def replaceSpaces(原创 2021-01-16 10:27:55 · 82 阅读 · 0 评论 -
程序员面试金典 面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例1输入: s1 = "abc", s2 = "bca"输出: true 示例2输入: s1 = "abc", s2 = "bad"输出: false解答class Solution {public: bool CheckPermutation(string s1, string s2) { int m=s1.length(); int n原创 2021-01-14 16:18:56 · 85 阅读 · 0 评论 -
程序员面试金典 面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。class Solution {public: bool isUnique(string astr) { int len=astr.length(); for(int i=0;i<len;i++) { for(int j=0;j<len;j++) { if((i!=j)&&astr[i原创 2021-01-14 15:36:33 · 106 阅读 · 0 评论