
剑指offer
程の编程日记
这个作者很懒,什么都没留下…
展开
-
剑指offer-中等题-47 求1+2+3+...+n
题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路 递归求和,循环求和等等,我们很容易有很多种思路,甚至还可以用求和公式来计算,但是由于上述限制,我们的递归好像是最有可能实现的。 很容易有递归代码 public int Sum_Solution(int n) { if (n == 1) return n; return n+Sum_Solution(n-1); }原创 2020-11-17 17:43:36 · 408 阅读 · 0 评论 -
剑指offer-简单题-18 二叉树的镜像
题目描述 二叉树的镜像 操作给定的二叉树,将其变换为源二叉树的镜像 思路 题目不难理解,其实就是二叉树左右子树的转换,用很适合用递归来做 如果树为空 什么都不干 树不为空,交换左右子树 然后再递归交换左右子树的左右子树即可 代码 public void Mirror(TreeNode root) { if (root != null){ TreeNode tmp = root.left; root.left = root.right;原创 2020-11-09 09:57:44 · 174 阅读 · 0 评论 -
剑指offer-简单题-6 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 示例 输入 [3,4,5,1,2] 返回值 1 思路 非递减 啥意思 递增或者数相同 思考: 1 2 3 4 5 6 7 -> 2 3 4 5 6 7 1 4 5 6 7 1 2 3 7 1 2 3 4 5 6 1 1 2 3 5 8 -> 2 3 5 8 1 1 很多种转换,不过可以发现规律原创 2020-11-04 17:02:00 · 240 阅读 · 0 评论 -
剑指offer-简单题-5 用两个栈实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 stack1用来存放正常入队的值 如果要出队了,直接stack1出栈是不行的呀,所以把stack1全部出栈倒腾到stack2中,stack2再出栈就是出队的正确数字了 例如当前队列: 1 2 3 4 5 stack1(底->上):1 2 3 4 5 此时直接出栈自然是5,但是人家出队应该是出1才对,所以倒腾到stack2中 stack2(底->上):5 4 3 2 1 此时出栈就是1啦! 所以原创 2020-10-28 17:00:41 · 483 阅读 · 2 评论