![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
codeDonald
这个作者很懒,什么都没留下…
展开
-
【剑指offer】4.二维数组中的查找
java中: 获取二维数组的行数:array.length 获取二维数组的列数:array[0].length 是.length String是.length() C++中: 获取数组的长度为.size() 从左上开始寻找target,大则–列,小则++行 java实现: public class Solution { public boolean Find(int target, int...原创 2019-04-25 18:58:13 · 64 阅读 · 0 评论 -
【剑指offer❤️】18.删除链表节点
题目一:在O(1)时间删除链表结点 给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 JAVA /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNo...原创 2019-04-27 17:25:05 · 142 阅读 · 0 评论 -
【剑指offer❤️】16.数值的整数次方
java: public class Solution { public double Power(double base, int exponent) { double result =1; for(int i=1;i<=Math.abs(exponent);i++) result*=base; return...原创 2019-04-27 13:46:27 · 86 阅读 · 0 评论 -
【剑指offer❤️】15.二进制中1个个数
输入一个整数,判断二进制中1的个数 java中 : byte[] cannot be converted to boolean int cannot be converted to boolean C++: class Solution { public: int NumberOf1(int n) { int count=0;; unsigned int f...原创 2019-04-27 12:46:23 · 165 阅读 · 0 评论 -
【剑指offer❤️】14.剪绳子
给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少? 例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。 一 用动态规划 通常是用来求最优解(最大值,最小值) 从上到下分析, 从下到上实现 什么时候可以用动...原创 2019-04-27 12:07:44 · 121 阅读 · 0 评论 -
【剑指offer】11.旋转数组的最小数字
中点mid属于左半区间,则左半区间是[l, mid],右半区间是[mid+1, r],更新方式是r = mid;或者 l = mid + 1;,此时用第一个模板: 版本1 当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算mid时不需要加1。 int bsearch_1(int l, int r) { w...原创 2019-04-26 14:07:34 · 72 阅读 · 0 评论 -
【剑指offer❤️】10.4矩形覆盖
还是先找关系 N 方法 1 1 2 2 3 3 4 5 关系式 N = N-1 + N-2 JAVA: ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ public class Solution { public int RectCover(int target) { int[] sa...原创 2019-04-26 11:19:32 · 75 阅读 · 0 评论 -
【剑指offer】10.3 变态跳台阶 不用麻烦了,青蛙很忙的,青蛙不会飞,从零开始跳
还是先找出关系式 不用麻烦了,青蛙很忙的,青蛙不会飞,从零开始跳 台阶 跳法 1 1(1) 2 2(1 1, 2) 3 4(1 1 1,1 2,2 1,3) 4 8 (1 1 1 1,1 1 2,1 2 1,1 3,2 1 1,2 2,3 1,4) 可以看出来 关系式是 N = N-1 +2*(N-2) JAVA: public class Soluti...原创 2019-04-26 11:03:55 · 130 阅读 · 0 评论 -
【剑指offer】10.2 青蛙跳台阶 可平地而起,无阁楼空中
这种题 需要先写出来一个 关系式,找出来跳法 和 台阶 的关系 台阶 跳法 1 1(1) 2 2(1 1,2) 3 3(1 1 1,1 2, 2 1) 4 5(1111,11 2,1 2 1,2 11,2 2) 现在看出来了吗?n台阶的跳法 = (n-1) + (n-2) 回到了斐波那契数列 java: public class Solution { ...原创 2019-04-26 10:49:59 · 93 阅读 · 0 评论 -
【剑指offer】10.斐波那契数列 递归还是迭代!=重复多 ?递归 :动态规划
如果使用递归 会造成大量的数据重复计算 递归是从上到下,一层层计算。 那么反过来 根据 下面的值 计算上面 依赖于他们的值,就是动态规划了。 JAVA public class Solution { public int Fibonacci(int n) { int[] save = {0,1}; if(n<2) retur...原创 2019-04-26 10:31:34 · 185 阅读 · 0 评论 -
【剑指offer】5.替换空格
JAVA java 获取 i 字符位置的值 str.charAt(i) 设置 i位置的值:str.setCharAt(i,’ '); public class Solution { public String replaceSpace(StringBuffer str) { int count=0; for(int i=0;i<str.length();i+...原创 2019-04-26 10:16:01 · 84 阅读 · 0 评论 -
【剑指offer】8.二叉树的下一节点
1。如果一个树有右子树,那么他右子树的最左节点就是它的下一个节点。 2。如果节点没有右子树,并且它是它父节点的左子树,那么它的下一个节点就是父子树。 3。如果一个树没有左,右子树,那么它的父节点上第一个是父节点左子树的树就是它的下一个节点,如果直到根节点前都没有左子树,那么就没有下一个节点。 JAVA: /* public class TreeLinkNode { int val; ...原创 2019-04-25 22:57:07 · 61 阅读 · 0 评论 -
【剑指offer】7.重建二叉树
* * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */...原创 2019-04-25 21:29:04 · 67 阅读 · 0 评论 -
【剑指offer】6.从尾到头打印链表
书上是输出就行,牛客网上是返回一个数组,这是放在数组返回的,输出就直接输出了。 利用栈 利用栈就是遍历链表的同时,压入栈,注意是while只要头节点不为空就压入,然后再只要不为空就弹出到arraylist java 中栈的用法: (1)stack.push(i) 压栈 (2)stack.pop()弹出栈并且删除 (3)stack.peek()查看栈顶 syso(stack)就可查看全部 (4)s...原创 2019-04-25 20:36:45 · 61 阅读 · 0 评论 -
【剑指offer】22.链表的倒数第K个节点
java: 遍历的时候就在记录次数。 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindKthToTa...原创 2019-04-27 21:17:21 · 84 阅读 · 0 评论