自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 动态规划——最后一块石头的重量|| #JAVA

这道题的思路其实和分割等和子集的思路非常相似实质是01背包,还是尽可能的去装满石头总和的一半的背包,就是说我们题目是要求所剩的石头最少,就极端情况就是没有剩下的石头,因为是两块石头去磨,所以只要能找到凑出石头总重一半的石头我们就有认为是可以的,target = (石头总重)/ 2,我们向下取整,因为会有不能均匀分到一半的情况这时我们只需要去尽量放满这target容量大小的背包就可以了,剩下的就是两部分内容的差值就是我们剩下最小的石头。组合 2 和 1,得到 1,所以数组转化为 [1,1,1],

2024-07-19 11:01:16 386

原创 动态规划——不同路径 II #JAVA

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格的左上角 (起始点在下图中标记为 “Start” )。1. 向右 -> 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右 -> 向右。3x3 网格的正中间有一个障碍物。网格中的障碍物和空位置分别用。从左上角到右下角一共有。

2024-07-18 15:44:32 422 1

原创 动态规划——不同路径 #JAVA

当 i>0 且 j>0 时,可以从 (i−1,j) 向下移动到达 (i,j) 或从 (i,j−1) 向右移动到达 (i,j),到达 (i,j) 的路径数目为到达 (i−1,j) 的路径数目与到达 (i,j−1) 的路径数目之和,因此动态规划的状态转移方程是 dp[i][j]=dp[i−1][j]+dp[i][j−1]。当 i=0 或 j=0 时,从 (0,0) 到达 (i,j) 的路径是唯一的,因此动态规划的边界情况是:当 i=0 或 j=0 时,dp[i][j]=1。1. 向右 -> 向下 -> 向下。

2024-07-18 13:53:52 1142

原创 动态规划——使用最小花费爬楼梯 #JAVA

首先这道题和LeetCode 70很像同样使用动态规划的思想,同样的先定好dp[]数组的含义,i表示第几个台阶,dp[i]则记录上到此台阶所需要的最小体力。再来推到递推公式,因为上到第i个台阶只能是通过它的前一个或者前两个台阶上来的所以dp[i] = dp[i - 1] + cost[ i - 1]或者 dp[i] = dp[i - 2] + cost[ i - 2]只要在两者之间选择小的一个就可以。最低花费方式是从 cost[0] 开始,逐个经过那些 1 ,跳过 cost[3] ,一共花费 6。

2024-07-18 13:24:07 488

原创 动态规划——爬楼梯 #JAVA

分析dp数组的含义是下标为n的数就是有n种爬法,每一层的爬法又能够通过前两层的爬法叠加,很好理解,因为每次只能爬 1 级或 2 级,所以 f(x) 只能从 f(x−1) 和 f(x−2) 转移过来。你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。

2024-07-18 11:50:54 288

原创 动态规划——斐波那契数列 #JAVA

然后再去分析递推公式,题目已经告诉了F(n) = F(n - 1) + F(n - 2),那么dp数组则是。答案需要取模 1e9+7(1000000007) ,如计算初始结果为:1000000008,请返回 1。这里的话肯定一维数组就可以了,并且通过题意分析到dp数组中下位为i的数就题目的F(n)下一步就是对于dp数组的初始化题目也以及告诉了F(0) = 0,F(1) = 1。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。

2024-07-18 11:21:19 480

原创 JAVA n的质因数个数----唯一分解定理

if(n > 1) {//除到最后若是剩余数比1大则还要把最后一个数也算上。本算法指导老师李昌晋。

2024-01-30 21:47:51 181 1

原创 JAVA求 1~N 中的所有素数----埃氏筛法

思路:如果一个数不是素数,那么这个数一定是n个素数的乘积(0和1除外),同理,素数的 k倍数一定是合数(k >= 2)的倍数全部标记为合数。

2024-01-29 20:15:39 192

原创 JAVA基础算法二分法

/下一次在左半部分去收索了。//下一次在右半部分去收索了。这里我们定义数组为a,左边界为left,右边界为right,目标数为target。指在答案具有单调性的前提下,利用二分的思想枚举答案,将求解问题转化为验证结果。return -1;//没有的话就返回-1。

2024-01-24 21:47:23 432 1

原创 java寻找数组中只出现一次的数字

例如:用户输入的数组是{2,2,1,1}那么结果会是0(变换位置结果一样),如果是{2,2,2, 1,1}(变换位置一样)这样的,则会出现结果是2。注意使用本方法的前提必须是有这个只出现一次的数,不然会出现错误的答案。本方法用到的思路是按位异或。

2024-01-22 22:02:09 485

原创 最小公倍数(接上文的最大公约数)

求最小公倍数为两个数的积除以这两个的最大公约数。

2024-01-22 21:13:30 380

原创 基础数学思维

除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。求最大公约数-------欧几里得辗转相除法。1997 ÷ 615 = 3 (余 152)反复做除法运算,当余数为 0 时,取当前。615 ÷ 152 = 4(余7)152 ÷ 7 = 21(余5)7 ÷ 5 = 1 (余2)5 ÷ 2 = 2 (余1)2 ÷ 1 = 2 (余0)至此,最大公约数为1。

2024-01-22 21:10:48 478

原创 蓝桥杯经典算法题java----01背包问题

第一行为两个数字 totalw​eight、N,均不超过 1000。totalw​eight 含义见题干,N 为物品数量。接下来 N 行,每行两个数字Wi​、Vi​,均不超过 1000。实现一个算法求解 01 背包问题。输出一行,为在背包容量限制下的最大化利益。// 2: 类名必须Main, 不可修改。// 1:无需package。

2023-12-13 22:12:52 112 1

原创 蓝桥杯经典算法题java----实现快速排序

快速排序的工作原理是通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。第一行,数字 N (2≤N≤100) ,表示待排序的元素个数。请编写代码,完成 排序,对给定数据进行升序排列。第二行,待排序的元素。输出一行,为升序序列。

2023-12-09 09:54:53 153

原创 蓝桥杯经典算法题java----实现插入排序

插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从前向后扫描,找到相应位置并插入。第一行,数字 N (2≤N≤100),表示待排序的元素个数。请编写代码,完成 插入排序,对给定数据进行升序排列。// 2: 类名必须Main, 不可修改。// 1:无需package。第二行,待排序的元素。输出一行,为升序序列。

2023-12-09 09:51:58 65

原创 蓝桥杯经典算法题java----实现选择排序

选择排序的工作原理是每一次从需要排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排列完毕。第一行,数字 N (2≤N≤100),表示待排序的元素个数。请编写代码,完成选择排序,对给定数据进行升序排列。// 2: 类名必须Main, 不可修改。// 1:无需package。第二行,待排序的元素。输出一行,为升序序列。

2023-12-08 23:13:30 143 1

原创 蓝桥杯经典算法题java----A+B 问题【OJ 示例题目】

编写一个程序,使用标准输入来输入两个整数 A 和 B,然后把 A+B 的结果使用标准输出来输出。你可以滚动到本页面下方查看题目的示例输入和输出,这将极大地帮助你理解和完成题目。特别地,在编写程序时,不要输出任何多余的信息,所输出的答案要与样例输出的形式一致。欢迎开启算法 OJ 题的大门,本题为经典的 A+B 入门题,我们会以此题为示例介绍蓝桥云课 OJ 系统的正确使用方法。输入一行,为用空格分隔的两个正整数 a,b( 1≤a,b≤100 )。输入两个正整数A,B,请你计算 A+B,并输出。

2023-12-08 22:45:21 193

原创 蓝桥杯经典算法题----Fizz Buzz 经典问题

题目描述FizzBuzzFizzBuzz。

2023-12-08 22:31:45 284

原创 蓝桥杯经典算法题java----查找两个总和为特定值的索引

查找两个总和为特定值的索引。

2023-12-07 22:59:55 97 1

原创 蓝桥杯经典算法题java----找到给定字符串中的不同字符

i++) {c += a[i];i++) {d += b[i];

2023-12-06 23:31:21 99 1

原创 蓝桥杯经典算法题java----反转字符串中的字符

import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);String s = scan.nextLine();StringBuffer sb = new StringBuffer(s);System.out.println(sb.reverse());}}

2023-12-06 22:37:03 144 1

原创 蓝桥杯经典算法题java----压缩字符串

/如果前面压缩则后面数量为二的字符也需要压缩所以条件改变为只要两个就压缩。

2023-12-05 23:11:59 222 1

原创 蓝桥杯经典算法题java-----确定字符串是否是另一个的排列

b[j] = "0";//将已经对比并且相等的字符换为0。//将输入的字符串拿出做一一的对比。//将两个输入的字符串进行对比。

2023-12-04 17:29:38 203

原创 蓝桥杯经典算法题Java----确定字符串是否包含唯一字符

将输入的字符串分割好方便一一对比。if(a[i].equalsIgnoreCase(a[j])) {//不区分大小写。// 2: 类名必须Main, 不可修改。// 1:无需package。

2023-12-04 17:25:28 546

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除