- 博客(17)
- 收藏
- 关注
原创 LeetCode526优美的排列
LeetCode526优美的排列基于dfs,状态压缩文章目录LeetCode526优美的排列题目方法一:dfs(超时)1.思想:2.代码实现方法二:dfs+爆搜1.思想:2.代码实现方法三:dfs+状态压缩1.思想:2.代码实现题目假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数
2021-08-16 21:42:10
400
原创 LeetCode413:等差数列划分
LeetCode413:等差数列划分动态规划文章目录LeetCode413:等差数列划分题目解题思路代码实现总结题目如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中
2021-08-10 20:05:23
318
原创 LeetCode1137第N个斐波那契数
LeetCode1137第N个斐波那契数使用了递归,动态规划文章目录LeetCode1137第N个斐波那契数题目解题思路方法一:递归(超时)1.思想:2.代码实现方法二:动态规划1.思想:2.代码实现方法三:矩阵快速幂(降低时间复杂度)1.思想:2.代码实现方法四:打表1.思想:2.代码实现题目泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契
2021-08-08 21:03:14
428
原创 LeetCode1713得到子序列的最少操作次数
LeetCode1713得到子序列的最少操作次数使用了动态规划,贪心算法,二分查找文章目录LeetCode1713得到子序列的最少操作次数题目解题思路方法一:动态规划(超时)1.思想:2.代码实现方法二:贪心算法+二分查找1.思想:2.代码实现总结题目给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以在 arr 的任意位置插入任一整数。比方说,如果 arr = [1,4,1,2] ,那么你可以在中间添加 3
2021-08-05 19:26:53
252
原创 LeetCode137: 只出现一次的数字 II
文章目录题目描述解题思路代码实现题目描述给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99提示:1 <= nums.length <= 3 * 104-231 <= nums[i] <= 231 - 1nums 中,除某个元素仅出现 一次 外,其余每个元素
2021-04-30 21:42:32
198
1
原创 算法数组练习3
LeetCode167文章目录LeetCode167:两数之和 II - 输入有序数组方法一:双指针方法二:二分查找二、使用步骤1.引入库2.读入数据总结LeetCode167:两数之和 II - 输入有序数组给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] <
2021-02-20 22:47:49
91
1
原创 算法数组练习2
LeetCode27,80接上一篇博客的题,都是同一类型。算法数组练习1文章目录LeetCode27:移除元素LeetCode80:删除排序数组中的重复项 IILeetCode27:移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组
2021-02-17 20:09:43
125
原创 LeetCode283,26
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)思路:不能拷贝就不能新建一个数组复制了,一开始我撞进死胡同只想着怎么把0提到后边,后来突然发现可以先遍历一遍数组,如果是非零数,按照将第一个非零数赋值给数组num[0],第二个非零数赋值给数组num[1]这样的顺序直接覆盖,
2021-02-15 22:30:06
112
1
原创 算法练习:保证图可完全遍历
题目:Alice 和 Bob 共有一个无向图,其中包含 n 个节点和 3 种类型的边:类型 1:只能由 Alice 遍历。类型 2:只能由 Bob 遍历。类型 3:Alice 和 Bob 都可以遍历。给你一个数组 edges ,其中 edges[i] = [typei, ui, vi] 表示节点 ui 和 vi 之间存在类型为 typei 的双向边。请你在保证图仍能够被 Alice和 Bob 完全遍历的前提下,找出可以删除的最大边数。如果从任何节点开始,Alice 和 Bob 都可以到达所有其他
2021-01-27 22:09:01
203
原创 算法练习:等价多米诺骨牌对的数量
题目描述:给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 ac 且 bd,或是 ad 且 bc。在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的数量。
2021-01-26 21:12:53
259
原创 算法练习:最长连续递增序列
题目:给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。示例 1:输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。
2021-01-24 19:25:02
382
原创 算法练习:数组形式的整数加法
题目:对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例 3:输入:A = [2,1,5], K
2021-01-22 21:15:08
271
原创 第二届蓝桥杯国际赛真题 试题C:基因子序列
试题C:基因子序列代码解释:两个for循环,外层代表给定的碱基序列的每个元素的循环,内层代表给定的约定的基因的每个元素的循环,设定两个指针a,t,a代表每次新的碱基序列元素开始循环时在给定的约定基因上开始循环的位置,即上次比较的元素位置。t则用来判定程序是否结束,每当比较到一对相同的元素t就加1,当检测到当前t等于给定的碱基序列的元素个数时,直接停止比较并输出结果。代码实现:public static void main(String[] args) { Scanner sc=new Sca
2021-01-19 18:30:38
235
原创 第二届蓝桥杯国际赛真题 试题B:特殊日期
试题B:特殊日期解题思路:把输入的开始日期和结束日期两个八位数分别分解为年月日三个数,按照年月日进行一天一天的嵌套for循环,每循环一次都将当天的年月日三个数按顺序存储进一个一维数组后,判断此日期是否是一个特殊日期,如果是则指针加1。写两个方法:1.方法save用于将年月日的数据一个数字一个数字保存在一维数组中2.方法isContinuous用于判断是否是特殊日期参考文章:蓝桥杯竞赛题——“特殊日期”两个方法:class Fin{ //存入数组 public void save(in
2021-01-18 20:40:01
674
原创 第二届蓝桥杯国际赛真题 试题A:猜拳
试题A:猜拳代码实现:public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //次数n int n=scanner.nextInt(); //将每一次三个人的出拳结果以整数形式存入二维数组 int[][] arr=new int [n][3]; Scanner scanner2=new Scanner(System.in); for (int i = 0; i &l
2021-01-15 20:26:56
659
2
原创 第一届蓝桥杯国际赛真题 试题A:仓库布局
第一届蓝桥杯国际赛真题 试题A:仓库布局实现代码public static void main(String[] args) { String string; int n,m,a,b = 0,num; Scanner sc=new Scanner(System.in); string=sc.nextLine(); String[]str=string.split(" "); //行 n=Integer.parseInt(str[0]); //列 m=Integer.parseIn
2021-01-13 20:27:02
657
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人