
LeetCode
三-毛-六
这个作者很懒,什么都没留下…
展开
-
64_最小路径和
64.最小路径和 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 分析:原创 2021-10-14 09:59:54 · 123 阅读 · 0 评论 -
55_跳跃游戏
55.跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例 2: 输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达原创 2021-10-11 10:03:02 · 88 阅读 · 0 评论 -
37_解数独
37.解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 示例: 分析: 回溯法解决 我们可以考虑按照行优先的顺序依次枚举每一个空白格中填的数字,通过递归+回溯的方法枚举所有可能的填法。如果填到最后一个格子,仍没有冲突则说明我们已经找到答案了 数独条件: 每个数在每原创 2021-10-08 17:34:30 · 125 阅读 · 0 评论 -
36_有效的数独
36.有效的数独 请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 注意: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规则,验证已经填入的数字是否有效即可。 示例: 分析: 有效的数独满足一下三个条件: 同一个数字在每一行只能出现原创 2021-10-06 10:07:12 · 127 阅读 · 0 评论 -
118_杨辉三角与杨辉三角II
118.杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 解法一:动态规划 dp[i][j] = dp[i-1][j-1] + [i-1][j] class Solution: def generate(self, numRows: int) -> List[List[原创 2021-10-05 10:24:20 · 142 阅读 · 0 评论 -
566_重塑矩阵
566.重塑矩阵 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。 如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。 示例1: 方法一:二维数组的一维表示 对于一个行原创 2021-10-04 09:43:21 · 202 阅读 · 0 评论 -
121_买卖股票的最佳时机
121.买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。原创 2021-09-29 09:35:21 · 113 阅读 · 0 评论 -
11_盛最多水的容器
11.盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例1: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 直接两趟for循环暴力求解的话会超出时间限制,不可取 代码如下: class Solution(object): def maxArea(s原创 2021-09-24 09:54:28 · 65 阅读 · 0 评论 -
198_打家劫舍
198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 动态规划主要分析步原创 2021-09-23 09:54:57 · 72 阅读 · 0 评论 -
120_三角形最小路径和
120.三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]] 输出:11 解释:如下面简图所示: 2 3 4 6 5 7 4 1 8 3 自顶向下原创 2021-09-18 09:07:07 · 143 阅读 · 0 评论 -
剑2_95_最长公共子序列
剑指Offer II 95.最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。 两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。 示例 1: 输入:text1 =原创 2021-09-16 08:57:47 · 89 阅读 · 0 评论 -
动态规划_路径的数目
动态规划 Dynamic Programming “Simplifying a complicated problem by breaking it down into simpler subproblems” (in a recursive manner) Divide & Conquer + Optimal substructure 关键点: 动态规划和递归或者分治没有根本上的区别(关键看有无最优子结构) 共性:找到重复子问题 差异性:最优子结构、中途可以淘汰次优解 动态规划 关键点: 1、原创 2021-09-14 09:16:12 · 248 阅读 · 0 评论 -
33. 搜索旋转排序数组
搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。 给你 旋转后 的数组 num.原创 2021-09-08 21:13:57 · 81 阅读 · 0 评论 -
9.回文数
9.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1: 输入:x = 121 输出:true 示例 2: 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 本题相对简单,不用过多分析 解法一:Python一句搞定 class Solution: def i原创 2021-09-07 21:30:47 · 85 阅读 · 0 评论 -
二分查找_69.x的平方根
二分查找的前提: 1、目标函数的单调性(单调递增或者递减) 2、存在上下界(bounded) 3、能够通过索引访问 # 二分查找的代码模板 left,right = 0,len(array) - 1 while left <= right: mid = (left + right) / 2 if array[mid] == target: # find the target!! break or return result elif array{mid] < target:原创 2021-09-07 08:54:27 · 112 阅读 · 0 评论 -
2_两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 解法一: # Definition for singly-linked list. # class ListNode: # def原创 2021-09-06 09:24:22 · 111 阅读 · 0 评论 -
22_括号生成
22_括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 有效括号组合需满足:左括号必须以正确的顺序闭合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 左右括号要对应,不能哪个多哪个少 这题有许多不同的解法 放上几个我觉得不错的解法,这些解法基本上都是递归的形式: 解法一: class Solution(object):原创 2021-09-04 10:08:26 · 81 阅读 · 0 评论 -
LeetCode_102 二叉树的层序遍历
在讲本题之前先回顾一下广度优先搜素 广度优先搜索: 广度优先搜索是一种图算法,针对图和树的一种遍历算法。 class TreeNode: # 创建节点类 def __init__(self,val): self.val = val self.left,self.right = None,None class Tree: # 创建树 def __init__(self): self.root = None def原创 2021-09-03 09:03:52 · 79 阅读 · 0 评论 -
递归与分治Python模板
分治代码模板 def divide_conquer(problem,param1,param2,...): # recursion terminator if problem is None: print_result return # prepare data data = prepare_data(problem) subproblems = split_problem(problem,data) # conquer su原创 2021-08-15 11:02:56 · 140 阅读 · 0 评论 -
6. Z 字形变换(Python)
6. Z 字形变换 题目: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。 class Solution(object): def convert(self, s, numRows):原创 2021-07-27 09:43:55 · 541 阅读 · 0 评论 -
LeetCode 1.Two Sum
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer原创 2021-07-17 10:21:30 · 78 阅读 · 0 评论