剑指offer
J-Proton
这个作者很懒,什么都没留下…
展开
-
[转载] 数值的整数次方
题目:实现函数 double Power(double base、int exponent)。求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。我们可以用如下公式求a的n次方:该公式很容易就能通过递归来实现。public class O { boolean Isfalse = false;//标记全局变量 public double pow(dou...原创 2019-08-05 10:05:48 · 106 阅读 · 0 评论 -
位运算-二进制中的个数
题目:输入一个整数,输出这整数转化为2进制后1的个数,比如输入9,输出2,因为9=1001思路:解法1:把这个整数的二进制的最右一位与1进行&运算如果是1代表最右一位为1,否则为0,然后再把这个数右移直到右移为0.统计完毕代码public static int count(int a){ int sum =0; while(a != 0){ ...原创 2019-08-05 00:34:59 · 199 阅读 · 0 评论 -
剪绳子
给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少?解法一:动态规划:思路:本题是一道典型的动态规划算法题,为了避免递归产生的重复计算,采用了从下而上的计算顺序实现,类似于循环写法的斐波那契数组,思路写在注释中,不好理解 public static...原创 2019-08-04 23:45:56 · 130 阅读 · 0 评论 -
矩阵中的路径
**请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。注意:输入的路径不为空;所有出现的字符均为大写英文字母;样例matrix=[[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”...原创 2019-12-02 19:44:04 · 151 阅读 · 0 评论 -
机器人的运动范围
机器人的运动范围地上有一个 mm 行和 nn 列的方格,横纵坐标范围分别是 0∼m−10∼m−1 和 0∼n−10∼n−1。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。但是不能进入行坐标和列坐标的数位之和大于 kk 的格子。请问该机器人能够达到多少个格子?思路:用递归去判断每个格子,并且用boolean矩阵标记,不能走回头路;class Solu...原创 2019-08-07 01:26:45 · 126 阅读 · 0 评论 -
非递归实现二叉树的中序遍历
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { pu...原创 2019-11-30 20:07:37 · 172 阅读 · 4 评论 -
二叉树的下一个节点
二叉树的下一个节点题目:给定一个二叉树的一个节点,在中序遍历中求出这个节点的下一个节点。思路:可以观察这个树找到规律因为是中序遍历我们写出数组d b h e i a f c g给定一个节点它有两种情况 最宏观的两种第一种是它有父节点还有子节点因为是左根右,这里的节点肯定是根,我们要找的肯定是他的右子树,它的右子树要么是一个端点,这个端点没有子树要么就是有子树,...原创 2019-08-01 10:48:48 · 87 阅读 · 0 评论 -
根据前序遍历序列和中序遍历序列构造二叉树算法(*)
一个前序遍历序列和一个中序遍历序列可以确定一颗唯一的二叉树。 根据前序遍历的特点, 知前序序列(PreSequence)的首个元素(PreSequence[0])为二叉树的根(root), 然后在中序序列(InSequence)中查找此根(root), 根据中序遍历特点, 知在查找到的根(root) 前边的序列为根的左子树的中序遍历序列, 后边的序列为根的右子树的中序遍历序...原创 2019-07-31 11:47:52 · 4688 阅读 · 0 评论 -
从尾到头打印链表(*)
从尾到头打印链表(*)输入一个链表,从尾到头打印它思路:用两种方法第一种是用堆栈的思想,将链表遍历压入栈中然后再一个个弹出来第二种使用递归的思想,因为递归是从内到外,先遍历每个节点,然后再回去打印输出public static class Node{ int val; Node next; } public static void pri...原创 2019-07-30 15:59:51 · 67 阅读 · 0 评论 -
字符串替换空格
字符串替换空格在一个字符串中用”%20“替换所有空格思路:在原有字符串长度上开辟新的空间,该空间就是把所有空格换成三个字符的长度也就是(3-1)* 空格的个数,然后有两个指针一个指在原来的字符串尾一个指在最新的尾,newindex跟着oldindex走,碰到空格就把newindex前三个都变成%20,碰到不是空格就把oldindex的东西给newindex的位置,一直下去,就能完成字符串的...原创 2019-07-30 10:05:52 · 239 阅读 · 0 评论 -
二维数组中查找给定整数
二维数组中查找给定整数在一个矩阵(二维数组)中,行方向上从左至右数字升序,列方向上从上到下升序排列,给定一个整数,让你在数组中找出有没有这个整数。思路:由于矩阵是按一定规律进行排列的,我们只需将点定在右上角(将点限定在矩阵里)然后与目标点进行比对,如果目标点大于该点代表只能在列号大的左面(因为升序),要将该点列坐标向左移(col要减),反之目标点小于这个点代表在他的下边(行方向上升序)所以要...原创 2019-07-30 09:29:17 · 231 阅读 · 0 评论 -
## 数组中找出任意重复元素
数组中找出任意重复元素在0—n-1个数中找出出现次数大于一的任意一个元素有两种做法修改原数组进行查找数据样例:2, 3, 2, 0, 2, 5, 3数据索引:0, 1 ,2, 3, 4, 5, 6因为给定范围0~n-1,如果有重复,肯定有元素放在它所在值的索引上之后,还有与它值相同的元素跟自己的索引值对不上,样例中如果把2放到no.2处,no.0处的2和0就对不上,反过来想,先判断一个...原创 2019-07-29 16:48:07 · 227 阅读 · 0 评论