(不要小看了这个数据范围) 首先明确一下题意,对于样例中的访问顺序3 1 4 1 5 9 2 6 5 3,它意味着:(数字代表城市) 从 3 出发,依次经过2~3间的铁路,1~2间的铁路,到达1; 再从 1 出发,依次经过1~2,2~3,3~4之间的铁路,到达4,以此类推. 显然,对于任意一段铁路, ...
分类:
其他好文 时间:
2020-12-25 11:40:54
阅读次数:
0
选择排序是一种简单直观的排序算法,其基本原理,对于一组记录的数据,通过第一次比较得到最小的记录,然后将该记录与第一条记录的位置交换;接着对不包含第一个以外的记录进行比较,得到最小记录并与第二个记录进行位置交换;重复该过程,知道进行比较的记录只有一个时为止。 以数组 {38,65,97,76,13,2 ...
分类:
编程语言 时间:
2020-11-20 11:27:23
阅读次数:
5
先中序遍历,对中序遍历得到的数组进行排序,将排序之后的数组与排序之前的数组比较,就可以找到是哪两个数进行了交换。 再中序遍历二叉树进行节点的值的交换,得到结果。 但是写得不够简洁,性能并不怎么样。 public void recoverTree(TreeNode root) { ArrayList< ...
分类:
其他好文 时间:
2020-07-01 12:55:45
阅读次数:
64
很好的用二进制来优化了$RMQ$中的操作 Body 定义一个数组$f[i][j]\(表示数列中\)[i,2 ^ j - 1]$这一段区间的极值 可得 \(f[i][j] = max(f[i][j-1],f[i+2^{j-1}][j-1])\) 先说一下这个的正确性,因为我们知道 \(f[i][j] ...
分类:
其他好文 时间:
2020-06-12 00:53:41
阅读次数:
60
冒泡排序: 核心思想:每一轮找出最大的元素放在数组的最后面。 public static void BubbleSort(int[] a){ //外层循环,找每一轮的最大数放在末尾 for(int i=0;i<a.length;i++){ //内层循环,遍历数组,比较得出最大值 for(int j= ...
分类:
编程语言 时间:
2020-05-22 21:31:13
阅读次数:
54
package com.atguigu.java3; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.Date; /** * File类的使用 * * 1. File类的 ...
分类:
编程语言 时间:
2020-05-07 15:42:24
阅读次数:
63
归并排序的步骤如下: 思想:将数组分成两部分,两部分都是有序的时候,把两个数组合并。合并的方法就是双指针,i 指向左边的数组,j 指向右边的数组,比较 L[i] 和 R[j] 的大小,将其填入原数组,并且将 i 或 j 往后移。 步骤: 1.将数组分成两部分,直到其中只包含一个元素 2.当数组只包含 ...
分类:
编程语言 时间:
2020-04-24 20:06:48
阅读次数:
53
String类概述 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是 说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的 时候不需要导包! String类的特点 字符 ...
分类:
编程语言 时间:
2020-04-14 22:33:44
阅读次数:
77
原理: 1、第一个元素可以看做是已经排序好的小数组,第二个元素和这个小数组比较,放到合适的位置,组成新的已排序的小组数。2、第三个元素在和前面组成的新的小数组比较,决定排在什么位置,如此循环,直到结束 public static void insertatesort() { int[] array ...
分类:
编程语言 时间:
2020-03-26 19:16:42
阅读次数:
57
给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨。Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。重复上述过程直到没有披萨剩下。每一块披萨的大小按顺时针方向由循环数组 ...
分类:
其他好文 时间:
2020-03-25 01:27:50
阅读次数:
140