摘要: 剑指 Offer 04. 二维数组中的查找 首先需要注意到题目下方的数据范围,n和m可能是0,所以当n等于0时,需要及时返回false,因为此时矩阵都不存在了,所以也就不存在有target了。 这里还需要注意到题目上说到的是,从左到右依次递增,从上到下依次递增,所以我们取左上角作为中点进行二分,当当 阅读全文
posted @ 2022-02-16 20:42 NullPointer_C 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 03. 数组中重复的数字 首先可以注意到数组长度为n,所有的元素都在0~n-1之间,所以可以开一个长为n的数组用来记录每个元素的次数,当某一个元素的出现频率大于2时,说明这是重复的,可以返回 class Solution { public int findRepeatNumber( 阅读全文
posted @ 2022-02-16 20:32 NullPointer_C 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 太恶心了这题,处理边界处理了半天,这里提到不能用*,/,%,所以就考虑了使用减法来模拟除法。 思路是首先需要做特判,比如a被除数等于0,可以直接返回,b除数等于0,则不是有效的除法运算,需要抛异常。 还有当a为最小整数,b为-1时,二者相除会得到超过整数最大值的数,需要返回Integer.MAX_V 阅读全文
posted @ 2022-02-15 23:56 NullPointer_C 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 14- II. 剪绳子 II 这里需要注意到数据范围已经从Ⅰ的1-58更新至1000,且需要对1e9+7取模运算,所以这里已经不能再使用dp了,因为dp需要使用max,所以不能比较出后来的和之前的哪个大,这里只能使用数学方法了,即整数定理,可以把任何一个整数分成是2和3的和,且3比 阅读全文
posted @ 2022-02-14 15:49 NullPointer_C 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 51. 数组中的逆序对 最容易想到的做法当然是暴力的枚举每一组数对,\((nums[i], nums[j])\),时间复杂度为$O(n^2)$,对应数据范围为$5e4$,很容易就超时了。 int reversePairs(int* nums, int numsSize){ int 阅读全文
posted @ 2022-02-13 15:19 NullPointer_C 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 17. 打印从1到最大的n位数 注意这里的n是表示位数,所以最大的数也就是枚举每一位都是9的情况。 最后从1枚举到最后一位即可。 class Solution { public int[] printNumbers(int n) { if(n <= 0) { return new 阅读全文
posted @ 2022-02-13 14:43 NullPointer_C 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 60. n个骰子的点数 概率dp。 我们用$dp[i][j]$表示使用i个骰子投出总和j的概率,容易得到n个骰子最大的和为$6 \times n$,即全为6的情况,范围在[n, 6n]之间,共计有$5 \times n + 1$种情况。 如果暴力求解,那么范围就会在$6 ^ n$之 阅读全文
posted @ 2022-02-12 21:45 NullPointer_C 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 49. 丑数 多路归并+dp,可以看出所有的丑数都是由质因数$2$,\(3\),$5$乘上比它更小的丑数得到的,于是,现在假设有3个数组,分别是: A:{12,22,32,42,52,62,82,102......} B:{13,23,33,43,53,63,83,103..... 阅读全文
posted @ 2022-02-12 17:36 NullPointer_C 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 面试题19. 正则表达式匹配 太难了,要是面试的时候碰到这种题,直接寄了。 最简单的办法就是直接调库 class Solution { public boolean isMatch(String s, String p) { return s.matches(p); } } dp做法如下: clas 阅读全文
posted @ 2022-02-12 17:12 NullPointer_C 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 38. 字符串的排列 和含有重复数组的组合问题是同样的思路,需要在同一树层上去重,因为会重复。 class Solution { public String[] permutation(String s) { if(s == null || s.equals("")) { retu 阅读全文
posted @ 2022-02-11 20:08 NullPointer_C 阅读(19) 评论(0) 推荐(0) 编辑