剑指offer
小妲己在王者峡谷
这个作者很懒,什么都没留下…
展开
-
栈的压入、弹出序列
/*题目: 栈的压入、弹出序列 * * 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 * 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列, * 但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相...原创 2019-06-25 11:19:02 · 74 阅读 · 0 评论 -
求1+2+3+...+n
package com.wsy.sword;public class Sum_Solution{ /* * 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 * * 思路: * 1.不能用循环则使用递归 * 2.不能用判断则用与的短路原理(...原创 2019-07-18 15:28:32 · 109 阅读 · 0 评论 -
不用加减乘除做加法
package com.wsy.sword;public class Add{ /* * 不用加减乘除做加法 * * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 * * 思路: * 加减乘除的运算可以用位运算替代 */ public int add(int num1,...原创 2019-07-18 16:41:38 · 82 阅读 · 0 评论 -
第一个只出现一次的字符
package com.wsy.sword;import java.util.LinkedHashMap;public class FirstNotRepeatingChar{ /* * 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). * ...原创 2019-07-12 08:40:46 · 87 阅读 · 0 评论 -
数组中重复的数字
package com.wsy.sword;import java.util.HashMap;import java.util.Map;public class Duplicate{ // Parameters: // numbers: an array of integers // length: the length o...原创 2019-07-18 17:29:00 · 84 阅读 · 0 评论 -
构建乘积数组
package com.wsy.sword;public class Multiply{ /* * 构建乘积数组 * 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1], * 其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 * ...原创 2019-07-18 19:24:29 · 84 阅读 · 0 评论 -
链表中环的入口结点
package com.wsy.sword;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class EntryNodeOfLoop{ /* * 链表中环的入口结点 * ...原创 2019-07-19 14:37:54 · 170 阅读 · 0 评论 -
删除链表中重复的结点
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class DeleteDuplication{ /* * 删除链表中重复的结点 * 在一个排序的链表中,存在重复的结点,请删除...原创 2019-07-19 15:29:08 · 101 阅读 · 0 评论 -
二叉搜索树与双向链表
package com.wsy.converttree;import java.util.Stack;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...原创 2019-07-24 10:59:02 · 81 阅读 · 0 评论 -
字符串的排列
package com.wsy.sword;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Set;public class Permutation{ /* * 字符串的排列 * 输入一个字符串,按字典序打印...原创 2019-07-24 14:51:09 · 119 阅读 · 0 评论 -
和为S的连续正数序列
package com.wsy.sword;import java.util.ArrayList;public class FindContinuousSequence{ /* * 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。 ...原创 2019-07-17 17:55:33 · 73 阅读 · 0 评论 -
二叉树的下一个结点
package com.wsy.sword;import java.util.Stack;class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val)...原创 2019-07-20 11:15:48 · 73 阅读 · 0 评论 -
对称的二叉树
package com.study.binarytree;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class IsS...原创 2019-07-20 11:45:14 · 93 阅读 · 0 评论 -
和为S的两个数字
package com.wsy.sword;import java.util.ArrayList;public class FindNumbersWithSum { /* * 题目描述 *输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 *输出描述: *对应每个测试案例,输出两个数,小的先输出...原创 2019-07-17 23:46:51 · 76 阅读 · 0 评论 -
左旋转字符串
package com.wsy.sword;public class LeftRotateString { /* * *汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务, *就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S, *请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”, *要求输出循环左移3位后的结果,即“...原创 2019-07-17 23:59:07 · 115 阅读 · 0 评论 -
丑数
package com.wsy.sword;import java.util.ArrayList;import java.util.List;public class GetUglyNumber_Solution{ /* * 丑数 * 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 ...原创 2019-07-11 20:06:32 · 98 阅读 · 0 评论 -
把数组排成最小的数
package com.wsy.sword;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class PrintMinNumber{ public static void main(String[...原创 2019-07-11 19:22:57 · 74 阅读 · 0 评论 -
扑克牌顺子
package com.wsy.sword;import java.util.Arrays;public class IsContinuous{ /* * LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)... * 他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育...原创 2019-07-18 11:22:36 · 90 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
/* * 题目:二叉搜索树的后序遍历序列 * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 * 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 * * 思路: * 二叉搜索树:根节点大于所有左孩子,小于所有右孩子。后序遍历:左右根 * 假设后续遍历序列:2, 5, 4, ...原创 2019-06-21 16:15:14 · 73 阅读 · 0 评论 -
从上往下打印二叉树
import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class PrintFromTopToBottom{ class TreeNode { int val = 0; TreeNode left = null; Tr...原创 2019-06-25 14:45:02 · 59 阅读 · 0 评论 -
二叉树中和为某一值的路径
import java.util.ArrayList;public class FindPath{ class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2019-06-26 11:12:52 · 75 阅读 · 0 评论 -
动态规划之打家劫舍
/* * 题目:打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金...原创 2019-06-27 19:16:32 · 302 阅读 · 0 评论 -
数组中只出现一次的数字
package com.wsy.sword;public class FindNumsAppearOnce { /* * 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 * 请写程序找出这两个只出现一次的数字 * * 思路: * 1. 可以用位运算实现,如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或 * 2. 根据异或的结果1所在的...原创 2019-07-09 00:06:29 · 82 阅读 · 0 评论 -
O(1)时间删除链表中的结点
class Node{ int val; Node next; public Node(int val){ this.val = val; }}public class DeleteNode{ /* * O(1)时间删除链表中的结点 * * 思路:删除链表中的结点需要知道待删除结点的前置结点 *...原创 2019-06-28 16:40:08 · 112 阅读 · 0 评论 -
复杂链表的复制
class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; }}public class ComplexListNo...原创 2019-06-28 15:45:19 · 73 阅读 · 0 评论 -
二叉树的镜像
import java.util.LinkedList;import java.util.Queue;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...原创 2019-06-28 17:52:04 · 77 阅读 · 0 评论 -
数组中出现次数超过一半的数字
public class MoreThanHalfNum { /* * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 * 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 * 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 * 如果不存在则输出0。 * * 思路: * 方法1:对数组进行排序,存在元素出现次数超过数...原创 2019-06-28 22:57:42 · 102 阅读 · 0 评论 -
二叉树的深度
import java.util.LinkedList;import java.util.Queue;/* * 二叉树的深度 * 输入一棵二叉树,求该树的深度。 * 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径, * 最长路径的长度为树的深度。 */public class TreeDepth { /* * 层序遍历,即最大层就是树的深度,缺点需要辅助队列...原创 2019-06-28 23:20:57 · 71 阅读 · 0 评论 -
两个链表的第一个公共结点
package com.wsy.sword;import org.w3c.dom.Node;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class FindFirstCommonNode { ...原创 2019-07-10 00:48:44 · 85 阅读 · 0 评论 -
数组中的逆序对
package com.wsy.sword;public class InversePairs { public static void main(String[] args) { InversePairs inversePairs = new InversePairs(); int[] arr = {364,637,341,406,747,995,234,971,571,219,...原创 2019-07-10 23:39:37 · 80 阅读 · 0 评论 -
最小的K个数(JAVA)
package com.wsy.sword;import java.util.ArrayList;public class GetLeastNumbers{ public static void main(String[] args) { GetLeastNumbers getLeastNumbers = new GetLeastNumbers(); ...原创 2019-07-05 17:16:24 · 215 阅读 · 0 评论 -
连续子数组的最大和
package com.wsy.sword;public class FindGreatestSumOfSubArray{ public static void main(String[] args) { int[] array = {1,-2,3,6,-10,7,2,-5}; FindGreatestSumOfSubArray f = new...原创 2019-07-11 17:07:39 · 93 阅读 · 0 评论 -
数值的整数次方
/* * 给定一个double类型的浮点数base和int类型的整数exponent。 * 求base的exponent次方。 * * 思路:快速幂法 * 将幂exponent转换为二进制幂表示法,如13:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0; * 快速幂法将expoent >>1 ,如果exponent不为0则乘上本身,否则将base继...原创 2019-07-20 23:57:52 · 86 阅读 · 0 评论