
Java
Java
dychf
这个作者很懒,什么都没留下…
展开
-
无界背包经典题目
最少的硬币数目(零钱兑换) 描述:给定一个无重复数组nums,求构成目标数target使用最少的数字个数。数组中数字可以重复使用。 因为数字可以重复使用,不再是0-1背包问题,而是无界背包问题(也叫完全背包)。 分析:定义 F(i)F(i)F(i) 表示组成目标值 iii 所需要的最少数字数量, 那么 F(i)F(i)F(i) 对应的状态转移方程为: F(i)=minj=0..n−1F(i−cj)+1 F(i)=\min _{j=0 . . n-1} F\left(i-c_{j}\right)+1 F(i原创 2022-04-17 19:18:38 · 393 阅读 · 0 评论 -
判断数字是否为回文数字
不难想到将数字转换成字符串进行回文字符串的判断。 对于数字,有比较巧妙的办法: 将数字每次除以10作为前一半 将数字每次对10取模作为后一半 判断前一半和后一半是否相等 public boolean palindrome(long num) { if (num < 0 || (num % 10 == 0 && num != 0)) return false; long x = 0; while (num > x) { x原创 2022-04-16 20:54:06 · 225 阅读 · 0 评论 -
力扣-455分发饼干
题目链接 描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 示例: 输入: [1,2,3], [1,1] 输出: 1 解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。 虽原创 2020-09-13 22:31:03 · 222 阅读 · 0 评论 -
排序类型题目
1. 215.数组中第K个最大元素(medium) 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 本题有三种方法: 使用Java自带的api对数组进行排序public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[nums.length - k];原创 2020-09-13 11:26:03 · 442 阅读 · 0 评论 -
双指针类型题目
1. 633平方数之和 (Easy) 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得a^2 + b^2 = c。 使用双指针的思想, 关键在于两个指针的初始化, 左指针取零, 右指针区target的平方根. class Solution { public boolean judgeSquareSum(int c) { int num1=0; //此处注意, 取值为c的平方根, c过大时,c*c超出int范围,出现负数 int num原创 2020-08-18 16:48:39 · 1329 阅读 · 0 评论