![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 63
筱筱世家
这个作者很懒,什么都没留下…
展开
-
leetcode 329. 矩阵中的最长递增路径
package leetcode;/** * 329. 矩阵中的最长递增路径 * 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 * <p> * 对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。 * <p> * <p> * <p> * 示例 1: * <p> * <p> * 输入:matrix = [[9.原创 2021-04-21 22:55:58 · 203 阅读 · 1 评论 -
leetcode 494. 目标和 三种方法 暴力递归 缓存 优化算法
package leetcode;import java.util.HashMap;/** * 494. 目标和 * 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 * <p> * 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 * <p> * <p> * <p> * 示例: * <p.原创 2021-04-21 21:37:43 · 159 阅读 · 0 评论 -
leetcode 961. 重复 N 次的元素
package Algorithms;import java.util.HashMap;import java.util.Map;/*** 961. 重复 N 次的元素* 在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。* <p>* 返回重复了 N 次的那个元素。* <p>* <p>* <p>* 示例 1:* <p>* 输入:[1,2,3,3]* 输出:3...原创 2021-04-14 09:24:24 · 122 阅读 · 0 评论 -
leetcode 260. 只出现一次的数字 III
package leetcode;/** * 260. 只出现一次的数字 III * 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 * <p> * <p> * <p> * 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? * <p> * <p> * <p> * 示例 1: * <p&.原创 2021-04-13 22:52:12 · 79 阅读 · 0 评论 -
leetcode 137. 只出现一次的数字 II
package leetcode;/** * 137. 只出现一次的数字 II * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 * * 说明: * * 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? * * 示例 1: * * 输入: [2,2,3,2] * 输出: 3 * 示例 2: * * 输入: [0,1,0,1,0,1,99] * 输出: 99 * 通过次数55,746提交次数81,.原创 2021-04-13 22:19:05 · 153 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字
package leetcode;/** * 136. 只出现一次的数字 * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 * * 说明: * * 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? * * 示例 1: * * 输入: [2,2,1] * 输出: 1 * 示例 2: * * 输入: [4,1,2,1,2] * 输出: 4 * 通过次数376,723提交次数528,896 */pu.原创 2021-04-13 21:44:29 · 58 阅读 · 0 评论 -
leetcode 590 N 叉树的后序遍历
package Algorithms;import java.util.*;/*** 590. N 叉树的后序遍历* 给定一个 N 叉树,返回其节点值的 后序遍历 。* <p>* N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。* <p>* <p>* <p>* 进阶:* <p>* 递归法很简单,你可以使用迭代法完成此题吗?* <p>* &...原创 2021-04-13 17:02:23 · 63 阅读 · 0 评论 -
无重复字符的最长子串
package leetcode;import java.util.HashMap;import java.util.Map;/** * 3. 无重复字符的最长子串 * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 * * 示例 1: * * 输入: "abcabcbb" * 输出: 3 * 解释: 因为无重复字符的最长子串是 "abc",所以其长度...原创 2020-02-26 21:52:58 · 137 阅读 · 1 评论 -
删去k个数字后的最小值
给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数尽可能小。应该如何选取被去掉的数字?/** * @Author: subd * @Date: 2019/9/10 7:48 * 删去k个数字后的最小值 */public class RemoveKDigits { public static String removeRemoveKDigits(String n...原创 2019-09-10 08:02:49 · 355 阅读 · 0 评论 -
判断一个数是否为2的整数次幂?
public static boolean isPowerof2(int num){ return (num&num-1)==0;}原创 2019-09-10 07:45:05 · 127 阅读 · 0 评论 -
全排列的下一个数
给出一个正整数,找出这个正整数所有数字全排列的下一个数。说通俗点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原数的新整数。举几个例子:如果输入12345,则返回12354。如果输入12354,则返回12435。如果输入12435,则返回12453。获取全排列下一个数的3个步骤。1.从后向前查看逆序区域,找到逆序区域的前一位,也就是数字置换的边界。2.让...原创 2019-09-09 08:20:41 · 484 阅读 · 0 评论 -
大整数相加
给出两个很大的整数,要求实现程序求出两个整数之和。/** * @Author: subd * @Date: 2019/9/6 7:39 * 两个大整数相加 */public class BigNumberSum { public static String bigNumberSum(String bigNumberA, String bigNumberB) { ...原创 2019-09-06 07:58:12 · 339 阅读 · 0 评论 -
无序数组排序后的最大相邻差
有一个无须整形数组,如何求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。package Algorithm;/** * @Author: subd * @Date: 2019/9/5 8:05 * 无序数组排序后的最大相邻差 */public class MaxSortedDistance { public static void main(...原创 2019-09-05 08:23:56 · 301 阅读 · 3 评论 -
用栈实现队列
/** * @Author: subd * @Date: 2019/9/5 8:38 * 用栈来实现队列 */public class StackImplementQueue { private Stack<Integer> stackA = new Stack<>(); private Stack<Integer> stackB =...原创 2019-09-05 08:48:34 · 102 阅读 · 0 评论 -
金矿问题
很久很久以前,有一位国王有5座金矿,每座金矿的黄金储量不同,需要参加挖掘的工人人数也不同。例如有的金矿储量是500Kg黄金,需要5个人来挖掘。有的金矿储量是200Kg。需要三个人来挖掘。如果参与挖矿的工人总数是10.每座金矿要么全挖,要么不挖。不能派出一半人挖取一半的金矿。要求用程序求出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?以下为可选条件:共10人 200Kg/3人 ...原创 2019-09-03 08:37:20 · 386 阅读 · 0 评论 -
【算法技巧】位运算装逼指南
帅地Java团长今天作者:帅地 来源:公众号【苦逼的码农】位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看...转载 2019-05-28 10:23:51 · 204 阅读 · 0 评论 -
鸡尾酒排序
冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点的向着数组的一侧移动,算法的每一轮都是从左到右来比较元素,进行单向的位置交换的。/** * @Author: subd * @Date: 2019/8/19 8:31 * 鸡尾酒排序 冒泡进阶 */public class bubbleSort2 { /** * 冒泡排序的每一个元素都可以像小气泡...原创 2019-08-19 08:47:02 · 145 阅读 · 0 评论 -
快速排序(单、双边循环法、非递归)
从冒泡排序演化而来。快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分。这个思路就叫做分治法。选定基准元素以后,我们要做的就是把其他元素中小于基准原色的都交换到基准元素的一边,大于基准元素的都交换到基准元素的另一边。有两种实现方法1.双边循环法2.单边循环法双边循环法代码示例:/** ...原创 2019-08-20 08:55:35 · 998 阅读 · 0 评论 -
冒泡排序(三版)
冒泡排序是一种稳定排序,值相等的元素并不会打乱原本的顺序。由于该排序算法的每一轮都要遍历所有元素吗,总共遍历(元素数量-1)轮,所以平均的时间复杂度是O(n2)./** * @Author: subd * @Date: 2019/8/16 8:19 */public class BubbleSort { public static void main(String[] a...原创 2019-08-16 08:44:20 · 116 阅读 · 0 评论 -
堆排序
堆排序算法步骤:1.把无须数组构建成二叉堆,需要从小到大排序,则构建成最大堆,需要从大到小排列则构建成最小堆。2.循环删除堆顶元素,替换到二叉堆的末尾,调整堆产生的新的堆顶。/** * @Author: subd * @Date: 2019/8/22 8:41 */public class HeapSoft { public static void main(Stri...原创 2019-08-22 09:00:04 · 102 阅读 · 0 评论 -
计数排序
线性排序初步代码实现:不稳定排序/** * @Author: subd * @Date: 2019/8/26 7:26 * @descrition 计数排序 */public class CountSort { public static int[] countSort(int[] array) { //1.得到数列的最大值 int ma...原创 2019-08-26 07:50:17 · 903 阅读 · 0 评论 -
桶排序
桶排序是一种线性时间的排序算法。类似于计数排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。代码示例:/** * @Author: subd * @Date: 2019/8/27 7:29 * 桶排序 */public class BuketSort { public static void main(String[] args) { double...原创 2019-08-27 07:57:45 · 379 阅读 · 0 评论 -
LRU(末位淘汰)算法
/** * @Author: subd * @Date: 2019/8/28 8:22 * LRU * 末尾淘汰算法 线程不安全 * 手写linkedHashMap 进行书写 */public class LRU { private Node head; private Node end; //缓存上限设置 private int limit; ...原创 2019-08-28 08:56:28 · 628 阅读 · 0 评论 -
A星寻路算法
以估值高低来决定搜索优先次序的方法,被称为启发式搜索。代码示例:/** * @Author: subd * @Date: 2019/8/29 7:38 */public class ASearch { //迷宫地图 public static final int[][] MAZE = { {0, 0, 0, 0, 0, 0, 0}, ...原创 2019-08-29 08:34:01 · 685 阅读 · 0 评论 -
Bitmap算法
Bitmap 代码示例、/** * @Author: subd * @Date: 2019/8/30 7:41 * 位图算法 */public class MyBitmap { //每个word是一个long类型元素,对应一个64位的二进制数据 private long[] words; private int size; public MyBit...原创 2019-08-30 08:01:32 · 115 阅读 · 0 评论 -
求最大公约数
/** * @Author: subd * @Date: 2019/9/2 7:54 * 求最大公约数 */public class GreatestCommonDivisor { /** * 暴力枚举法 */ public static long getGreatestCommonDivisor(long a, long b) { ...原创 2019-09-02 08:29:42 · 263 阅读 · 0 评论 -
单向链表
/** * @Author: subd * @Date: 2019/5/6 15:51 */public class SingleNodeList<E> { Node head; Node last; int size; private static class Node<E> { E item; ...原创 2019-05-07 11:17:04 · 112 阅读 · 0 评论