算法
JH_WW
这个作者很懒,什么都没留下…
展开
-
KMP
···package newcoder;public class KMP { /** * 判断str1中是否有str2,如果有返回在str1中的开始下标 * * @param str1 * @param str2 * @return */ public int getIndex(String str1, Str...原创 2018-08-11 17:48:55 · 331 阅读 · 0 评论 -
希尔排序
/** * @Author JH * @CreateDate 18-6-7 * @Description 希尔排序 */ //使用int数组时要将泛型继承改为Integer这样才能使用compareTopublic class ShellSort <E extends Character> { public void shellSort(E [] array,in...原创 2018-06-07 15:04:46 · 192 阅读 · 0 评论 -
从尾到头打印链表每个节点的值
package com.dugstudio.SwordToOfferBook.Singleton.Interview;import java.util.ArrayList;import java.util.Stack;/** * @Author JH * @CreateDate 18-5-30 * @Description 输入一个链表,从尾到头打印链表每个节点的值。 */ c...原创 2018-05-30 22:50:54 · 285 阅读 · 0 评论 -
排序二维数组查找
排序二维数组查找/** * @Author JH * @CreateDate 18-5-30 * @Description 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 */public class TwoDimensionArrayLookup { public boolean Find(int target, int [...原创 2018-05-30 21:32:52 · 371 阅读 · 0 评论 -
翻薄饼
/** * @Author JH * @CreateDate 18-6-12 * @Description 翻薄饼 有n张大小各不相同的薄饼,一张叠在另一张上面 将大的放在下边, * 先查找最大的数,如果这个数在最后,不用进行操作,如果这个数在第一位,只需要翻一次,即数组整体换位, * 否则要进行两次交换,第一次将这个数换到第一位,然后再转至数组,使得这个数变为最后一个 */pub...原创 2018-06-12 18:27:32 · 758 阅读 · 0 评论 -
二叉查找树中删除一个节点
import java.util.Stack;/** * @Author JH * @CreateDate 18-6-11 * @Description 在二叉查找树中删除一个节点 * 1.如果该节点是叶子节点 删除该节点 * 2.如果该节点有左子树 将左子树的根节点代替该节点 * 3.如果该节点只有右子树 将右子树根节点代替该节点 * 4.既有左节点又有右节点,用右节点代替该...原创 2018-06-11 22:42:16 · 1184 阅读 · 0 评论 -
插值查找
import java.util.Arrays;/** * @Author JH * @CreateDate 18-6-11 * @Description 插值查找 */public class InsertSearch { /** * * @param array 待查找的数组 * @param n 查找的值 * @param lef...原创 2018-06-11 15:27:35 · 331 阅读 · 0 评论 -
求两个整数之和 找出所有和为S的连续正数序列 字符串循环左移(ROL)
求两个整数之和 找出所有和为S的连续正数序列 字符串循环左移(ROL)package com.dugstudio.SwordToOffer;import java.util.ArrayList;/** * @Author JH * @CreateDate 18-5-27 * @Description */public class FindContinuousSequenc...原创 2018-05-27 22:11:23 · 233 阅读 · 0 评论 -
树的深度 递归非递归实现
树的深度 递归非递归实现package com.dugstudio.SwordToOffer;import java.util.LinkedList;/** * 树的深度递归和非递归算法 */class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; p...原创 2018-05-26 23:18:52 · 1950 阅读 · 0 评论 -
给定范围n内给定数字m的个数
给定范围n内给定数字m的个数求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。 ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 编程之美上给出的规律:如果第i位(自右至左,从1开始标号)上的...原创 2018-05-26 23:17:10 · 1212 阅读 · 0 评论 -
数组拼接成最小的数字
数组拼接成最小的数字package com.dugstudio.SwordToOffer;import jdk.nashorn.internal.ir.IdentNode;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Li...原创 2018-05-26 23:14:27 · 1193 阅读 · 0 评论 -
数值的整数次方
数值的整数次方/** * @Author JH * @CreateDate 18-6-2 * @Description 数值的整数次方 */public class Power { public double Power(double base, int exponent) { if (base!=0&&exponent==0)return 1...原创 2018-06-02 21:46:42 · 403 阅读 · 1 评论 -
十进制转成二进制中1的个数
解法一:让临时变量每次乘以二再与源数字相与,测试每一位上的数字是否为1 public int NumberOf1(int n) { int temp=1,count=0; while(temp!=0){ if((temp&n)!=0){ count++; } temp=te...原创 2018-06-02 21:03:52 · 990 阅读 · 0 评论 -
堆排序
堆排序 1.建堆 2.排序 3.调整package sort;/** * Create by ~JH~ on 2018/4/23 */public class HeapSort{ public void buildHeap(int [] a){ for (int i=(a.length-2)/2;i&gt;=0;i--){ a...原创 2018-04-27 11:31:45 · 240 阅读 · 0 评论 -
字典序的全排列
import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * @Author JH * @CreateDate 18-6-7 * @Description 字典序的全排列 */public class LexicographicPermute { privat...原创 2018-06-07 22:04:12 · 498 阅读 · 0 评论 -
二进制反射格雷码 幂集
import java.util.ArrayList;import java.util.List;/** * @Author JH * @CreateDate 18-6-7 * @Description 二进制反射格雷码 幂集 */public class BRGC { private List<String> l1; public List<St...原创 2018-06-07 22:47:56 · 941 阅读 · 0 评论 -
拓扑排序的两种实现DFS和减一思想
package com.dugstudio.practiceBook;import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * @Author JH * @CreateDate 18-6-7 * @Description 拓扑排序 对于图中的每一条边,边的起始点总是排在终点之前 *...原创 2018-06-07 18:24:45 · 616 阅读 · 0 评论 -
约瑟夫斯问题
package com.dugstudio.practiceBook;/** * @Author JH * @CreateDate 18-6-10 * @Description 约瑟夫斯问题 */public class JosephusProblem { /** * 当n为奇数时f(n)=2*f((n-1)/2)+1 * 当n为偶数时f(n)=2*f(n...原创 2018-06-10 22:29:24 · 963 阅读 · 0 评论 -
两个链表的第一个公共节点
package com.dugstudio.SwordToOfferBook.Singleton.Interview;/** * @Author JH * @CreateDate 18-6-10 * @Description 两个链表的第一个公共节点 */public class FindFirstCommonNode { public ListNode FindFirstC...原创 2018-06-10 19:28:17 · 242 阅读 · 0 评论 -
数组中的逆序对
package com.dugstudio.SwordToOfferBook.Singleton.Interview;import java.util.Arrays;/** * @Author JH * @CreateDate 18-6-10 * @Description 数组中的逆序对 */public class InversePairs { /** * ...原创 2018-06-10 19:03:00 · 220 阅读 · 0 评论 -
判断该数组是不是某二叉搜索树的后序遍历的结果
/** * @Author JH * @CreateDate 18-6-9 * @Description */public class VerifySquenceOfBST { //方法一 public boolean VerifySquenceOfBST(int [] sequence) { if (sequence==null||sequence....原创 2018-06-09 16:58:19 · 391 阅读 · 0 评论 -
判断给定出栈序列是否为该给定进栈次序的弹出顺序
package com.dugstudio.SwordToOfferBook.Singleton.Interview;import java.util.Stack;/** * @Author JH * @CreateDate 18-6-9 * @Description 判断给定出栈序列是否符合 进栈次序的出栈可能 * 利用辅助栈 */public class IsPopOrde...原创 2018-06-09 15:50:46 · 372 阅读 · 0 评论 -
常数时间内查找栈中最小的元素
import java.util.Stack;/** * @Author JH * @CreateDate 18-6-9 * @Description 栈中最小的元素 */public class MinStack <E extends Integer>{ private Stack<E> minStack=new Stack<E>();...原创 2018-06-09 10:49:17 · 1387 阅读 · 0 评论 -
十进制和二十六进制转换
十进制和二十六进制转换 /** * @Author JH * @CreateDate 18-6-1 * @Description A表示第一列 B表示第二列 C表示第三列...Z表示第26列 AA表示第27列... * * 输入一个字符串 输出他表示第几列 */ public int get(String str){ char s;in...原创 2018-06-01 22:57:45 · 2230 阅读 · 0 评论 -
旋转数组最小的数
旋转数组最小的数import java.util.ArrayList;/** * @Author JH * @CreateDate 18-6-1 * @Description 旋转数组最小的数 * 利用旋转数组两部分有序的特点,使用二分法划分 如果中间值大于末尾值则说明最小数在mid-high之间 * 如果中间值小于low的值说明最小值在low-mid之间, */public ...原创 2018-06-01 22:02:55 · 234 阅读 · 0 评论 -
反转链表
package com.dugstudio.SwordToOfferBook.Singleton.Interview;/** * @Author JH * @CreateDate 18-6-8 * @Description 反转链表 */ public class ReverseList { public Node ReverseList(Node head){ ...原创 2018-06-08 17:12:43 · 233 阅读 · 0 评论 -
两个队列实现栈
两个队列实现栈import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/** * @Author JH * @CreateDate 18-6-1 * @Description 两个队列实现栈 */public class StackToQueue { private Queu...原创 2018-06-01 18:57:41 · 187 阅读 · 0 评论 -
在O(1)时间内删除链表节点
package com.dugstudio.SwordToOfferBook.Singleton.Interview;/** * @Author JH * @CreateDate 18-6-8 * @Description 在O(1)时间内删除链表节点 */class Node{ public Integer value; public Node next;}pu...原创 2018-06-08 16:07:24 · 409 阅读 · 0 评论 -
打印小于n位的所有数字
package com.dugstudio.SwordToOfferBook.Singleton.Interview;/** * @Author JH * @CreateDate 18-6-8 * @Descriptionv 从1 打印n位数 eg:1,2,3...,999...999 */public class Print1ToMaxOfNDigits { public ...原创 2018-06-08 16:04:12 · 419 阅读 · 0 评论 -
B-树 B+树定义与简单的操作
B-树 B+树定义与简单的操作 B-树的定义 节点的孩子节点的最大数称为阶用m表示 所有的叶子节点在同一层,并且不带信息 每个节点最多含有m颗子树,最多含有m-1个关键字 根节点不是终端节点那么根节点至少有两个子树 除根节点以外其他非叶子节点至少有m/2向上取整个子树 每个非叶子节点的结构为:n,p0,k1,p1,k2,p2...原创 2018-05-31 22:26:31 · 1897 阅读 · 0 评论 -
归并排序
归并排序package sort;/** * Create by ~JH~ on 2018/4/27 */public class MergeSort { public static int[] sort(int [] a,int low,int high){ int mid=(low+high)/2; if (low<high){...原创 2018-04-27 11:23:57 · 190 阅读 · 0 评论 -
第一个只出现一次的字符
第一个只出现一次的字符package SwordToOffer;import java.util.*;/** * Create by ~JH~ on 2018/5/8 * 在一个字符串(1<=字符串长度<=10000,全部由字母组成) * 中找到第一个只出现一次的字符,并返回它的位置 */public class FirstNotRepeatingChar { ...原创 2018-05-08 22:52:42 · 193 阅读 · 0 评论 -
判断一个树是不是另一个树的子树
判断一个树是不是另一个树的子树 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution{ ...原创 2018-04-22 22:18:13 · 451 阅读 · 0 评论 -
去除空格
去除空格“` /** * 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 * 例如:” i am a little boy. “,变成”i am a little boy” * @param str * @param len ...原创 2018-04-22 21:12:03 · 295 阅读 · 0 评论 -
跳台阶
跳台阶有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。public static int CaculateNumber(int n){ int [] cn...原创 2018-04-22 21:10:19 · 201 阅读 · 0 评论 -
洗牌问题
洗牌问题“` package function;import java.util.Scanner;/**洗牌问题 * Create by ~JH~ on 2018/4/12 */ public class Main_2 { public static void main(String[] args) { Scanner sca = new Sca...原创 2018-04-13 07:03:00 · 283 阅读 · 0 评论 -
构造队列
构造队列import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;/** * Create by ~JH~ on 2018/4/12 循环有错或算法复杂度过大。 case通过率为40.00% */public class Main { public static vo...原创 2018-04-13 07:01:03 · 263 阅读 · 0 评论 -
优雅的点
优雅的点import java.util.Scanner;/** * Create by ~JH~ on 2018/4/13 * 小易有一个圆心在坐标原点的圆, * 小易知道圆的半径的平方。 * 小易认为在圆上的点而且横纵坐标都是整数的点是优雅的 */public class Main{ public static void main(String[] args...原创 2018-04-13 06:53:14 · 234 阅读 · 0 评论 -
JD并集
并集 给你两个集合,要求{A} + {B}。 注:同一个集合中不会有两个相同的元素。我的方法(1)超出时间限制public static void Union(int []a,int []b){ Set<Integer>set=new HashSet<>(); for (int i:a ) ...原创 2018-04-06 20:15:11 · 230 阅读 · 0 评论 -
JD进制转换之幸运数
进制转换之幸运数小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)。 f(x)表示把x这个数用十进制写出后各个数位上的数字之和。如f(123)=1+2+3=6。 g(x)表示把x这个数用二进制写出后各个数位上的数字之和。如123的二进制表示为1...原创 2018-04-06 19:39:04 · 234 阅读 · 0 评论