
算法
文章平均质量分 75
WHYNOT.
这个作者很懒,什么都没留下…
展开
-
dfs和bfs
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?import java.util.concurrent.*;import java.util.*;public class Solution { in原创 2020-06-14 18:16:42 · 247 阅读 · 0 评论 -
图(java实现)
一、图的表示方式1、邻接矩阵如果是带权图,将1换成权值。2、邻接表表示与1 关联的有 1,2,3,4二、图的实现。图: /** * 图。 * notes:所有的节点。 * edges:所有的边。 */ static class Graph { HashMap<Integer, ...原创 2019-10-25 20:22:17 · 397 阅读 · 0 评论 -
暴力递归与动态规划
1、汉诺塔问题。打印n层汉诺塔从最左边移动到最右边的全部过程。 public static void main(String[] args) { method(3, "左", "右", "中"); } public static void method(int n, String from, String to, String help) { ...原创 2019-10-24 11:23:40 · 213 阅读 · 0 评论 -
贪心算法实例
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。[1]----------------------------------------...原创 2019-10-22 21:11:19 · 474 阅读 · 0 评论 -
前缀树(java实现)经典例题
Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。如下图:上图是一棵Trie树,表示了关键字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”} 。从上图可以归纳出Trie树的基本性质:①根节点不包含字符,除根节点外的每一个子节点都包含一个字符。②从根节点到某一个节点,路径上经过的字符连接起来,...原创 2019-10-22 20:53:45 · 750 阅读 · 0 评论 -
java实现并查集
在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。 Union:将两个子集合并成同一个集合。 ...原创 2019-10-22 19:05:35 · 505 阅读 · 0 评论 -
小岛问题
题目:一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?举例:0 0 1 0 1 01 1 1 0 1 01 0 0 1 0 00 0 0 0 0 0这个矩阵中有三个岛。分析:1、将数据存到二维数组中,遍历数组,当前值为1时,岛计数加一,将当前值写为2,并将当前于之相连的1值...原创 2019-10-22 18:16:02 · 418 阅读 · 0 评论 -
满二叉树,完全二叉树,平衡二叉树,二叉搜索树(二叉查找树)
二叉树: 每个结点不超过2个子树的树结构。满二叉树:一个结点要么是叶子节点,要么有两个叶子结点。(国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树)完全二叉树:深度为h,除h层外,h-1层是满二叉树,h层结点连续集中在左边。(若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这...转载 2019-10-21 09:50:46 · 547 阅读 · 0 评论 -
二叉树经典例题
二叉树: static class Node { private int data; private Node left; private Node right; public Node() { } public Node(int data) { this.da...原创 2019-10-18 13:32:31 · 774 阅读 · 1 评论 -
链表经典例题
单向链表:class Node { private int data; private Node next; public Node(int data) { this.data = data; } public int getData() { return d...原创 2019-10-16 15:08:48 · 221 阅读 · 0 评论 -
矩阵经典例题
一、顺时针打印矩阵宏观的将整个矩阵看作是一个套一个的方框 ,找到对角线上两个点的坐标,遍历每一个方框。 public static void method(int[][] arr) { method2(arr, 0, 0, arr.length - 1, arr[0].length - 1); } public static void metho...原创 2019-10-15 19:41:41 · 1228 阅读 · 0 评论 -
栈与队列
数组模拟队列: static class queue1 { private int[] arr; private int first = 0; private int end = 0; public void add(int num) { if (end >= arr.length) { ...原创 2019-10-15 17:43:28 · 188 阅读 · 0 评论 -
数组相邻两数最大差值
给定一个数组,求排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。思路:因为要求时间复杂度为O(n)且不能用非比较排序,常用的比较排序很难做到O(n)。这里是借助n+1个桶,将n个数平均分配到n个桶里,所以我们所求的最大差值肯定不在一个桶内(只有一个数另说),然后依次求出当前桶最小值与前一个非空桶最大值的差值,求出最大的差值就是我们要的结果。 st...原创 2019-10-15 16:49:04 · 529 阅读 · 0 评论 -
荷兰国旗问题
一、给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N) public void method(int[] arr, int num) { int index = 0; for (int i = 0; i < arr.length; i++) { ...原创 2019-10-15 15:41:31 · 187 阅读 · 0 评论 -
小和问题
一、最简单的就是遍历一遍算出小和二、通过归并的方法利用归并排序,分治 后用外排进行合并时同时求出这两段产生的小和。时间复杂度为n*lognpublic static int littleSum(int[] arr) { return mergeSort(arr, 0, arr.length - 1); } private static ...原创 2019-10-15 15:09:43 · 227 阅读 · 0 评论 -
java排序算法
数组中两个数交换位置: public static void swap(int[] arr, int a, int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }一、基于比较的排序1、冒泡排序 public static void bubbleSort(int[] arr){ if(arr =...原创 2019-10-14 15:14:26 · 198 阅读 · 0 评论 -
CCF201712-2 游戏(100分)
版权声明:转自 http://blog.youkuaiyun.com/ljflm/article/details/79323100 侵删。试题编号:201712-2试题名称:游戏时间限制:1.0s内存限制:256.0MB问题描述:问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。...转载 2018-03-08 11:27:41 · 479 阅读 · 0 评论 -
约瑟夫环
转自 http://blog.youkuaiyun.com/yanweibujian/article/details/50876631 侵删。 约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,...转载 2018-03-08 11:32:46 · 672 阅读 · 0 评论 -
蓝桥杯 入门训练 Fibonacci数列
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确...原创 2019-02-22 14:48:37 · 90 阅读 · 0 评论 -
C语言的整型溢出问题 int、long、long long取值范围 最大最小值
溢出和取值范围C语言的整型溢出问题整数溢出int、long int 、long long int 占用字节疑问《C和指针》中写过:long与int:标准只规定long不小于int的长度,int不小于short的长度。double与int类型的存储机制不同,long int的8个字节全部都是数据位,而double是以尾数,底数,指数的形式表示的,类似科学计数法,因此double比int能...转载 2019-02-22 15:16:36 · 1430 阅读 · 0 评论 -
约分--辗转相除法
#include<iostream>using namespace std;int main(){ int temp1; int temp2; cin>>temp1>>temp2; int a=temp1; int b=temp2; while(b!=0) { ...原创 2019-02-23 14:40:32 · 1143 阅读 · 0 评论 -
201712-1 最小差值
问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔。 输出格式 输出一个整数,表示答案。 样例输入 5 1 5 4 8 20 样例输出 1 样例说明...原创 2018-03-08 11:16:08 · 672 阅读 · 0 评论