
不完整刷题
波波虾遁地兽
关关难过关关过,事事难为事事为
展开
-
头条1-无重复字符的最长子串
头条1-无重复字符的最长子串原创 2019-12-28 14:26:31 · 201 阅读 · 0 评论 -
腾讯50-子集
腾讯42and50-子集和腾讯42一样,再复习一遍给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]标准回溯题按回溯思路,生成的顺序是[][1][12][123][1...原创 2019-12-22 15:02:35 · 143 阅读 · 0 评论 -
腾讯49-不同路径
腾讯48-不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释...原创 2019-12-22 14:58:08 · 120 阅读 · 0 评论 -
腾讯48-买卖股票的最佳时机 II
腾讯47-买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 ...原创 2019-12-22 14:27:57 · 181 阅读 · 0 评论 -
腾讯47-买卖股票的最佳时机
腾讯46-买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-...原创 2019-12-22 13:34:17 · 185 阅读 · 0 评论 -
腾讯46-最大子序和
腾讯45-最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。dp公式,就是根据当前值是否大于0,决定怎么利用之前...原创 2019-12-22 13:16:51 · 189 阅读 · 0 评论 -
腾讯45-爬楼梯
腾讯44-爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 ...原创 2019-12-22 13:08:59 · 150 阅读 · 0 评论 -
腾讯44-格雷码
腾讯43-格雷码格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。...原创 2019-12-22 12:58:17 · 167 阅读 · 0 评论 -
腾讯43- 全排列
腾讯43- 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]一看就是回溯的题,其实比子集题目难一点按正常的回溯做,可能是O(N! *N的)但这题最好但回溯仍可以做到O(N!的)但此时回溯写法和以往有点不一样,这里但回溯是基于...原创 2019-12-22 12:39:40 · 137 阅读 · 0 评论 -
腾讯42-子集
腾讯42-子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]标准回溯题按回溯思路,生成的顺序是[][1][12][123][13][2][23][3]一看...原创 2019-12-22 11:36:29 · 137 阅读 · 0 评论 -
腾讯41-括号生成
腾讯41-括号生成给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]从41-开始的4道题目属于回溯算法的题目哎,回溯思想并不好懂,代码也并不好写本题用一个left_count,记录左括号‘(’还剩余的个数...原创 2019-12-22 10:43:17 · 176 阅读 · 0 评论 -
腾讯40-二叉树的最近公共祖先
腾讯40-二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入:...原创 2019-12-22 09:50:33 · 136 阅读 · 0 评论 -
腾讯39-二叉搜索树的最近公共祖先
腾讯39-二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 ...原创 2019-12-22 09:32:27 · 126 阅读 · 0 评论 -
腾讯38-二叉树中的最大路径和
腾讯38-二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7]-10/ 9 20/ 15 7输出: 42...原创 2019-12-22 01:08:37 · 142 阅读 · 0 评论 -
腾讯37-二叉树的最大深度
腾讯37-二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。递归本函数,2行代码:# Definition for a binary tree node....原创 2019-12-22 00:29:51 · 123 阅读 · 0 评论 -
腾讯36-二叉搜索树中第K小的元素leetcode230
腾讯36-二叉搜索树中第K小的元素给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 13/ 1 42输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1]...原创 2019-12-22 00:24:56 · 118 阅读 · 0 评论 -
腾讯35-数组中的第K个最大元素
腾讯35-数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5一定能利用快排的partition函数接下来就是正确的写出partition函数python写partition函数8行,其中1,2,7,8行都好记,第一行,...原创 2019-12-21 23:57:26 · 133 阅读 · 0 评论 -
腾讯34-搜索旋转排序数组
腾讯34-搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,...原创 2019-12-21 22:38:11 · 184 阅读 · 0 评论 -
腾讯33 -排序链表
腾讯33 -排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5# Definition for singly-linke...原创 2019-12-21 20:25:37 · 138 阅读 · 0 评论 -
腾讯32-2的幂
腾讯32-2的幂2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16记住:位运算,数学上,通过 n > 0 且 n & (n - 1) == 0 即可判定是否满足 n?=2xn ?= 2^xn?=2x2x2^x2xnn-...原创 2019-12-21 19:38:58 · 134 阅读 · 0 评论 -
腾讯31-多数元素
腾讯31-多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2class Solution: def majorityElement(self, nums:...原创 2019-12-21 19:28:43 · 231 阅读 · 0 评论 -
腾讯30-只出现一次的数字
腾讯30-只出现一次的数字对异或对交换律要熟悉XOR 满足交换律和结合律a⊕b⊕a=(a⊕a)⊕b=0⊕b=ba⊕b⊕a=(a⊕a)⊕b=0⊕b=ba⊕b⊕a=(a⊕a)⊕b=0⊕b=b2 * (a + b + c) - (a + a + b + b + c) = c2∗(a+b+c)−(a+a+b+b+c)=cPythonclass Solution(object): def...原创 2019-12-21 17:37:24 · 113 阅读 · 0 评论 -
腾讯29-回文数
腾讯29-回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2019-12-21 17:26:55 · 184 阅读 · 0 评论 -
腾讯28-整数反转
腾讯28-整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。#假设我们的...原创 2019-12-21 16:36:52 · 229 阅读 · 0 评论 -
腾讯27-删除链表中的节点
腾讯27-删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2019-12-21 15:56:46 · 102 阅读 · 0 评论 -
腾讯26-相交链表
腾讯26-相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。##先求各自长度##然后并齐开始走即可,并判断##误区这里用考虑值相不相等,其实直接考虑结点结构node相等即可 # Definition for singly-linked list.# class ListNode:# def __init__(self, x):...原创 2019-12-21 15:51:12 · 132 阅读 · 0 评论 -
腾讯25-环形链表 II
腾讯25-环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。这道题就是求环形链表的入口。这张中,快慢结点第一次在z点处相遇,则慢结点走过a+b,快结点走过a+b+c+b因...原创 2019-12-21 15:28:09 · 135 阅读 · 0 评论 -
腾讯24-环形链表
腾讯24-环形链表给定一个链表,判断链表中是否有环。leetcode或者剑指 offer最让人难忘的题目,快慢指针,比较好记住# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None...原创 2019-12-21 15:10:00 · 133 阅读 · 0 评论 -
腾讯23-旋转链表
腾讯23-旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步:...原创 2019-12-21 14:56:31 · 119 阅读 · 0 评论 -
腾讯22-合并K个排序链表
腾讯22-合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6两种解法,记住,归并的O(nlogk)和最小堆(插入链表到堆,标准是链表的第一个元素,然后pop出一个...原创 2019-12-21 14:20:34 · 140 阅读 · 0 评论 -
腾讯21 -合并两个有序链表
腾讯21 -合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4这题和上面的 腾讯21 -两数相加一样,也是两个链表的顺序操作但这里不同但是,两个链表的顺序操作需要两个表都有值才行,所有while...原创 2019-12-21 13:55:26 · 111 阅读 · 0 评论 -
腾讯20-两数相加
腾讯20-两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-12-21 13:45:31 · 109 阅读 · 0 评论 -
腾讯19-反转链表
腾讯19-反转链表示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?# Definition for singly-linked list.# class ListNode:# def __init__(s...原创 2019-12-21 13:06:11 · 149 阅读 · 0 评论 -
腾讯18-合并两个有序数组
腾讯18-合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m =...原创 2019-12-21 00:47:05 · 117 阅读 · 0 评论 -
腾讯17-螺旋矩阵2 leetcode59
腾讯17-螺旋矩阵2和腾讯16-螺旋矩阵1思路一致,赋值不同而已def generateMatrix(self, n: int) -> List[List[int]]: row_begin,col_begin=0,0 row_end,col_end=n-1,n-1 num=1 matrix=[] for i...原创 2019-12-21 00:26:40 · 120 阅读 · 0 评论 -
腾讯16-螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,1...原创 2019-12-20 23:34:15 · 176 阅读 · 0 评论 -
腾讯15-存在重复元素
腾讯14-存在重复元素比较简单,判断去set() 前后操作是否一致即可,注意列表长度为空和列表长度为1的情况原创 2019-12-20 22:48:37 · 122 阅读 · 0 评论 -
腾讯14- 除自身以外数组的乘积
腾讯14- 除自身以外数组的乘积这个题不能用除法,思路是,每个点的结果,等过它左右结果的乘积,所以先预先算法从左到右的乘法结果和从右到左的乘法结果,然后每个点对应的结果再相乘即可。def productExceptSelf(self, nums: List[int]) -> List[int]: #每个点的结果等于它的左右的结果的乘积 res_left,...原创 2019-12-20 22:38:06 · 115 阅读 · 0 评论 -
腾讯13-反转字符串中的单词 III
腾讯13-反转字符串中的单词 IIIpython 中翻转一个字符串只需要几个字母 word-> word[::-1]def reverseWords(self, s: str) -> str:return ’ ‘.join([word[::-1] for word in s.split(’ ')])...原创 2019-12-20 20:39:51 · 119 阅读 · 0 评论 -
腾讯12- 反转字符串
腾讯12- 反转字符串很简单def reverseString(self, s: List[str]) -> None:i,j=0,len(s)-1while(i<j):s[i],s[j]=s[j],s[i]i+=1j-=1return s原创 2019-12-20 20:13:53 · 138 阅读 · 0 评论