
算法设计
文章平均质量分 61
云澈丿
小白在线指教
展开
-
DP_面试题_14-1_剪绳子(dp_贪心)
这道题给定一个大于 11 的正整数 n*,要求将 n* 拆分成至少两个正整数的和,并使这些正整数的乘积最大化,返回最大乘积。🍁给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为。可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。因为是子问题拆分且求最大值,所以动态规划是最容易想到的方法。原创 2023-07-17 14:58:33 · 208 阅读 · 0 评论 -
回溯_leetcode.77.组合
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。原创 2020-09-12 20:22:15 · 174 阅读 · 0 评论 -
排序_leetcode.347.前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。原创 2020-09-11 21:58:53 · 239 阅读 · 0 评论 -
回溯_leetcode.60.第k个排列
????题目????给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: "213"示例 2:输入: n = 4, k = 9输出: "2314"????分析原创 2020-09-10 14:32:33 · 254 阅读 · 0 评论 -
状态机_剑指offer.20_表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。原创 2020-09-10 14:31:10 · 194 阅读 · 0 评论 -
动态规划_leetcode.486.预测赢家
给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。原创 2020-09-03 10:21:05 · 504 阅读 · 1 评论 -
KMP_leetcode.214.最短回文串
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。原创 2020-09-02 09:39:40 · 511 阅读 · 0 评论 -
回溯_leetcode.17.电话号码的字母组合
给定一个仅包含数字 `2-9` 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。原创 2020-09-01 16:23:00 · 264 阅读 · 0 评论 -
KMP_leetcode.459.重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。原创 2020-08-26 10:08:21 · 616 阅读 · 0 评论 -
字符串(马拉车)_leetcode.647.回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。原创 2020-08-25 09:40:24 · 242 阅读 · 0 评论 -
模拟_leetcode.43_字符串相乘
????题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类原创 2020-08-24 10:02:01 · 210 阅读 · 0 评论 -
写树算法的套路框架
二叉树算法的设计的总路线:明确一个节点要做的事情,然后剩下的事抛给框架。原创 2020-08-21 09:34:00 · 251 阅读 · 0 评论 -
递归_leetcode.109.有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。原创 2020-08-20 14:59:22 · 251 阅读 · 0 评论 -
DFS_leetcode.130.被围绕的区域
]给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。原创 2020-08-18 10:24:32 · 319 阅读 · 0 评论 -
扩展欧几里得算法
欧几里德算法是用来求最大公约数原创 2020-08-13 12:25:19 · 305 阅读 · 0 评论 -
2020_java蓝桥_暑假训练_递归2
1、某城市经常在高峰时段发生交通拥堵,因此市政府决定采取管制措施:在高峰时段2、小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。3、X星球要派出一个5人组成的观察团前往W星。其中:A国最多可以派出4人。4、A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。要求:两个A中间有1张牌5、已知不同字母构成的串,求它的全排列6、有重复的字母中求取出m个所有组合 例如: “AAABBCCCCCCDD” 中取3个字母的所有组合原创 2020-08-11 10:55:58 · 286 阅读 · 0 评论 -
2020_java蓝桥_暑假训练_递归
1、小明刚刚看完电影《第39级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级。。2、X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中。。。3、匪警请拨110,即使手机欠费也可拨通!为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!4、公园票价为5角。假设每位游客只持有两种币值的货币:5角、1元。5、小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子原创 2020-08-09 16:19:23 · 341 阅读 · 1 评论 -
动态规划_leetcode.1504.统计全1子矩形
给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。原创 2020-08-06 11:25:22 · 552 阅读 · 0 评论 -
动态规划_leetcode.337.打家劫舍3
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。原创 2020-08-05 15:18:09 · 160 阅读 · 0 评论 -
拓扑广度_leetcode.207_课程表
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?原创 2020-08-04 15:29:48 · 178 阅读 · 0 评论 -
模拟_leetcode.415_字符串相加
题目给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。方法:模拟横竖加减法算法流程利用双指针i, j分别指向num1和num2 的末尾,模拟人工加法计算进位:计算carry = temp // 2, 代表当前位相加是否需要进位添加当前位:计原创 2020-08-03 10:07:50 · 195 阅读 · 0 评论 -
递归_leetcode.114.二叉树展开为链表
二叉树展开为链表题目分析解法一:暴力(常规思路)解法二: 深度递归搜索解法三:先序遍历递归解法四: 先序遍历迭代题目给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为1 \ 2 \ 3 \ 4 \ 5 \ 6分析本题需要将二叉树转化为列表,对于二叉树的题目,无非就以下几种解题思路:原创 2020-08-02 11:26:23 · 426 阅读 · 0 评论 -
分治_面试题.08.03_魔术索引
题目魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1:输入:nums = [0, 2, 3, 4, 5]输出:0说明: 0下标的元素为0示例2:输入:nums = [1, 1, 1]输出:1提示:nums长度在[1, 1000000]之间方法:暴力剪枝算法流程不做详细介绍,简单的代码一看就懂原创 2020-07-31 10:53:13 · 236 阅读 · 0 评论 -
leetcode算法刷题集纪录篇(持续更新)
力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT 技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。 此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化原创 2020-07-29 17:15:13 · 441 阅读 · 0 评论 -
递归_leetcode.151-剑指offer.07_重建二叉树(从先序和中序)
题目输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <= 5000解法一:递归思路对于任意一颗树而言,前序遍历的形式总是[ 根节点, [左子树的前序遍历结果],原创 2020-07-29 14:31:06 · 176 阅读 · 0 评论 -
滑窗_leetcode.713.乘积小于K的子数组
题目Your are given an array of positive integers nums.Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k.Example 1:Input: nums = [10, 5, 2, 6], k = 100Output: 8Explanation: The 8 su原创 2020-07-28 11:36:43 · 173 阅读 · 0 评论 -
二分_剑指offer.11_旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0分析思路如下图所示,寻找旋转数组的最小元素即为寻找 右排序数组 的首个元素 numbers[x] ,称 x 为 旋转点 。排序数组的查找问题首先考虑使用 二分法 解原创 2020-07-25 11:01:57 · 117 阅读 · 0 评论 -
动态规划_leetcode.64.最小路径和
题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。分析由于路径的方向只能是向下或向右,因此网格的第一行的每个元素只能从左上角元素开始向右移动到达,网格的第一列的每个元素只能从左上角元素开始向下移动到达,此时的路径是唯一的,因此每个元素对应的最小路径和即为对应的路径原创 2020-07-24 10:09:33 · 382 阅读 · 0 评论 -
递归_leetcode.95.不同的二叉搜索树2
题目给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:1 3 3 2 1 \ / / / \ \ 3 2 1 1 3原创 2020-07-24 10:07:24 · 218 阅读 · 0 评论 -
DFS-BFS_leetcode.785.判断二分图
题目给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph[i] 中不存在i,并且graph[i]中没有重复的值。示例 1:输入: [[1,3], [0,2], [1,3],原创 2020-07-23 10:34:53 · 235 阅读 · 0 评论 -
二分查找_模板学习(减治思想)
减而治之,即将大规模问题转化成小规模问题。减而治之是分而治之的特例,将大问题划分成若干个子问题以后,最终答案只在其中一个子问题里。原创 2020-07-18 20:01:03 · 361 阅读 · 0 评论 -
卡塔兰序列_leetcode.96.不同的二叉搜索树
卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名。历史上,清代数学家明安图(1692年-1763年)在其《割圜密率捷法》最早用到“卡塔兰数”,远远早于卡塔兰。有中国学者建议将此数命名为“明安图数”或“明安图-卡塔兰数”。卡塔兰数的一般公式为 C(2n,n)/(n+1)。原创 2020-07-15 12:05:33 · 307 阅读 · 0 评论 -
动态规划_leetcode.120.三角形最小路径和
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得了显著的效果原创 2020-07-14 11:16:21 · 262 阅读 · 0 评论 -
双栈_leetcode.678.有效地括号字符串
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。原创 2020-07-13 10:13:26 · 390 阅读 · 0 评论 -
索引数组_leetcode.315.计算右侧小于当前元素的个数
题目给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入: [5,2,6,1]输出: [2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更小的元素 (1).1 的右侧有 0 个更小的元素.分析这道题要用排序的思路来解决。快速查找和更新,使用递归或树的结原创 2020-07-11 10:35:58 · 1195 阅读 · 1 评论 -
动态规划_leetcode.309.最佳买卖股票时期含冷冻期
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得了显著的效果原创 2020-07-10 11:15:09 · 303 阅读 · 0 评论 -
暴力的美化——滑窗的进阶(最小覆盖子串)
链表子串数组题,用双指针别犹豫。双指针家三兄弟,各个都是万人迷。快慢指针最神奇,链表操作无压力。归并排序找中点,链表成环搞判定。左右指针最常见,左右两端相向行。反转数组要靠它,二分搜索是弟弟。滑动窗口老猛男,子串问题全靠它。左右指针滑窗口,一前一后齐头进。(引用自labuladong)原创 2020-05-23 11:56:07 · 362 阅读 · 0 评论 -
520,我会处理回文数了,你会了么?(dp+中心扩散)
寻找解决回文的好方法原创 2020-05-21 16:17:00 · 342 阅读 · 0 评论 -
斩破“拓扑”——直面”深-广度”——捕获“贪心”
对于图 G 中的任意一条有向边(u,v),u 在排列中都出现在 v 的前面。——拓扑排序原创 2020-05-17 17:06:08 · 300 阅读 · 0 评论 -
吃!!一份来自动态规划的大餐(最大正方形、最低票价)
此文用于记录算法学习过程以及学习方法,也是分享知识经验原创 2020-05-09 09:25:31 · 208 阅读 · 0 评论