行星碰撞
摘要:import java.util.Arrays;/** * 行星碰撞问题 * We are given an array asteroids of integers representing asteroids in a row. * <p> * For each asteroid, the abs
阅读全文
数组全排列
摘要:import java.util.ArrayList;import java.util.List;/** * 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 * * 示例 1: * * 输入:nums = [1,2,3] * 输出:[[1,2,3]
阅读全文
LeetCode125_给定一个字符串_判断是否是回文字符串(只考虑数字和字母_忽略大小写)
摘要:/** * 给定一个字符串,判断是否是回文字符串(只考虑数字和字母,忽略大小写) * <p> * Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignor
阅读全文
表现良好时间段
摘要:import java.util.HashMap;import java.util.Map;/** * 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 * 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 * 所谓「表现良好的时间段」,意味
阅读全文
括号有效问题
摘要:/** * 括号有效问题 */public class Parentheses { /** * 判断一个括号字符串是否有效 * * @param s 字符串 * @return 是否有效 */ public static boolean valid(String s) { char[] chars
阅读全文
给定有序数组arr,问K长度的绳子最多盖住几个点
摘要:import java.util.Arrays;/** * 给定有序数组arr,代表X轴上的点,给定一个正整数K,代表长度为K的绳子,问绳子最多能盖住几个点(绳子边缘碰到也算盖住) * <p> * 滑动窗口 */public class CoverMostPoint { /** * 滑动窗口 * *
阅读全文
Manacher算法
摘要:/** * Manacher算法 * <p> * 又叫“马拉车”算法,可以在时间复杂度为O(n)的情况下求解一个字符串的最长回文子串长度的问题 */public class Manacher { public static int manacher(String s) { if (s == null
阅读全文
Morris遍历
摘要:/** * Morris遍历:可以将非递归遍历中的空间复杂度降为O(1)。从而实现时间复杂度为O(N),而空间复杂度为O(1)的精妙算法 * <p> * 记作当前节点为cur。 * 如果cur无左孩子,cur向右移动(cur=cur.right) * 如果cur有左孩子,找到cur左子树上最右的节点
阅读全文
汉诺塔问题
摘要:import java.util.Stack;/** * 汉诺塔问题,在一根柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 * 规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘 */public class Hanoi { public
阅读全文
迪杰斯特拉算法
摘要:import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Map;/** * 迪杰斯特拉算法(Dijkstra)是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最
阅读全文
逆序一个栈,不申请额外空间,只使用递归函数
摘要:import java.util.Stack;/** * 逆序一个栈,不申请额外空间,只使用递归函数 */public class RevertStack { public static void main(String[] args) { Stack<Integer> stack = new St
阅读全文
给定一些分割符,给定一个待分割的字符串,打印出分割之后最长的字符串
摘要:import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;/** * 给定一些分割符,给定一个待分割的字符串,打印出分割之后最长的字符串(多个则换行输出) */public class Toke
阅读全文
给定N个整数,乱序,分行打印每个数字和其位置
摘要:import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.TreeMap;/** * 给定N个整数,乱序,分行打印每个数字和其位置(空格分隔,数字可重复) * e.g. * input
阅读全文
给定一个整数,求它的二进制表示中有多少个1
摘要:/** * 给定一个整数,求它的二进制表示中有多少个1 */public class CountOne { public static void main(String[] args) { int n = 1021; countOne1(n); countOne2(n); countOne3(n);
阅读全文
Prim算法
摘要:import java.util.ArrayList;import java.util.Comparator;import java.util.HashMap;import java.util.HashSet;import java.util.PriorityQueue;import java.ut
阅读全文
Kruskal算法
摘要:import java.util.ArrayList;import java.util.Collection;import java.util.Comparator;import java.util.HashMap;import java.util.HashSet;import java.util.
阅读全文
猴子爬山
摘要:/** * 猴子爬山问题:一个猴子在一座有台阶的山上爬山跳跃,猴子上山一步可跳1级或跳3级,试求猴子上山有多少种不同的跳法(假设台阶不超过50阶) * <p> * 注:一般台阶数不允许太高,因为有可能超过固定类型数字的表示范围 */public class ClimbMountains { publ
阅读全文
图的拓扑排序
摘要:import java.util.*;/** * 图的拓扑排序 * 1)从图中找到所有入度为0的点输出 * 2)把图中入度为0的点删掉,继续寻找入度为0的点输出,周而复始 * 3)图的所有节点被删除后,依次输出的顺序就是拓扑排序 * 要求:有向图且无环 * 应用:事件安排、编译顺序 */public
阅读全文
图的广度优先遍历
摘要:import java.util.*;/** * 图的广度优先遍历 */public class BreadthFirst { public static void bfs(Node node) { if (node == null) { return; } Queue<Node> queue =
阅读全文
图的深度优先遍历
摘要:import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Stack;/** * 图的深度优先遍历 */public class DepthFirst { public
阅读全文