
算法笔记
Free_YaW
不骄不躁
展开
-
【算法打卡】数字三角形
写在前面看到这道题目,直觉告诉我可以用动态规划求解。在代码实现过程中,我忘记考虑了左右走的步数不能大于1,好多时间都浪费在了这个点。在最后又忘记考虑层数数量的问题代码 Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[][] = new int[n][n]; for (int i = 0; i < n; i++){ for (i原创 2022-03-07 21:05:33 · 203 阅读 · 0 评论 -
【算法打卡】回文日期
写在前面这到没有什么技术含量的题目,卡了半天。原因是因为忘记考虑了日期的有效性。也就是月和天数是否有效。浪费了一个多小时…题目描述2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年原创 2022-03-05 20:23:39 · 167 阅读 · 0 评论 -
【算法打卡】单词分析
1.说在前面这是蓝桥杯官网的一道题目。这种类型的题目,见过很多次,写倒是第一次。2.题目描述3.代码 Scanner sc = new Scanner(System.in); String s = sc.next(); int size = s.length(); if (size == 0){ System.out.println(""); System.out.println(0);原创 2022-03-04 21:54:45 · 234 阅读 · 0 评论 -
【动态规划】 习题总结
1.整数拆分递归公式dp(n,k) = 1 n =1,k =1dp[n,k] = dp[n,n] n < kdp[n,k] = dp[n,n-1]+1 n =kdp[n,k] = dp[n,k-1] + dp[n-k,k] n > k代码// 题目描述:将正整数n无序拆分成最大数为k的拆分情况。拆分方案不重复 public static int split(int n,int k){ int [][] dp = new int[n原创 2022-02-20 18:42:25 · 400 阅读 · 1 评论 -
算法打卡【二分查找】
题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1解题代码: // 中间坐标 int mid = (end+start)/2;// 判断是否等于中间值 if(a[mid] == k){ return mid+1; }原创 2022-01-10 20:06:39 · 79 阅读 · 0 评论 -
【算法笔记】长度最小的子数组
题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。例子:输入:target = 7, nums = [2,3,1,2,4,3]输出:2个人理解这道题,博主采用快慢指针来解决。当遇到比taget的累加和后,就更新max(用来记录长度)。同时将慢指针back,移动一位。原创 2021-12-08 09:12:56 · 718 阅读 · 0 评论 -
【算法笔记】数组拆分
1.题目描述给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。2.例子输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 32. (1, 3), (2, 4) -&g原创 2021-12-04 10:50:50 · 519 阅读 · 0 评论