ACM专项——Java
華灯初上
Java / 网络安全
笔名:Zheng Ying
展开
-
树专项 —— 前/后序 + 中序 构造二叉树
已知树的前/后序 + 中序遍历, 构造出整棵二叉树特殊: 如果仅仅知道 前序 + 后序遍历 是不能唯一确定二叉树的。比如前序 [1, 2] 后序 [2, 1] 二叉树可以为: 1 / 2 或者 1 \ 2本文以 后序遍历 + 前序遍历 为例子 进行讲解例题链接: Construct Binary Tree from Inorder and Postorder TraversalGiven inorder and postorder traversal of.原创 2020-09-08 19:37:12 · 214 阅读 · 0 评论 -
Java OJ 时间复杂度
本文测试机cpu,测试基于JDK81. O(n)O(n)O(n)首先测试O(n)O(n)O(n)的运行次数,1次乘法 + 2次加法 + 1次判断public class Main{ public static void main(String[] args) { long xx = 1; long index = 1; long st...原创 2019-12-13 14:40:16 · 249 阅读 · 0 评论 -
排序专项——Java实现
1. Bubble Sort遍历 (n−1)(n-1)(n−1) 次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。一次遍历之后,最大的元素在数列的末尾。采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止public class Main{ public static void ...原创 2019-11-30 16:52:41 · 140 阅读 · 0 评论 -
Java String
1.StringString 在java8中使用char(两个字节)存储,在java13已经使用Byte(一个字节)存储ConstructorString str = "str"; //在字符串常量池中创建String str = new String("str"); //在堆中创建,也会在字符串常量池中创建String str = new String(da...原创 2019-11-23 16:31:51 · 130 阅读 · 0 评论 -
I/O专项——Java I/O
刚刚转Java,打cf竟然卡在了输入输出,,OJ中 仅仅会用到标准I/O.(System.in, System.out)System.inJava5之后加入的Scanner (可以看作是一个正则表达式工具)可以很方便的处理输入流。// 利用Scanner 封装标准输入流 System.inScanner in = new Scanner(System.in);// 判断是否还有可...原创 2019-10-14 15:10:22 · 93 阅读 · 0 评论 -
图论专项——并查集
并查集 (union & find)并查集理论部分:https://oi-wiki.org//ds/dsu/ private static int size = 100; private static int[] father = new int[size]; //初始化 //所有元素都为自己的祖先 public static void Init() { ...原创 2019-10-04 16:39:53 · 140 阅读 · 0 评论 -
图专项 ——图的存储
图的存储主要有邻接矩阵,邻接表,存边等几种方法。邻接矩阵临界矩阵就是按照点的个数nnn,建立一个n×nn \times nn×n的矩阵,矩阵的a[i][j]存iii点到jjj点的权值。 private static int[][] matrix; private static int size; public static void get_data(){...原创 2019-05-26 17:08:07 · 154 阅读 · 0 评论 -
Java——队列/栈
QueueQueue 是一个接口,其具体是由LinkedList实现实现的。常用方法Queue<String> queue = new LinkedList<String>();//成功返回true,失败返回false或null//添加到队尾queue.offer(E x);//获得并移除队首元素queue.poll();//获得队首元素但不删除que...原创 2019-09-27 09:27:27 · 315 阅读 · 0 评论 -
Java Collections
总结一下 Java collections 在oj中使用创建数组//不可改变 int size=10; int[] data = new int [size];//可变ArrayList<Integer> staff = new ArrayList<Integer>();ArrayList//ConstuctorArrayList() ;Arra...原创 2019-05-09 14:47:36 · 350 阅读 · 0 评论 -
搜索专项——BFS
题目一 (单词拼接)题目链接https://leetcode.com/problems/word-ladder/class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordList) { int result = 1; ...原创 2019-09-26 10:35:58 · 124 阅读 · 0 评论 -
贪心专项——后悔
此类问题都是先假设所有的工作都能完成,然后从头开始检测每一个任务的合法性。P2949 工作调度 Work Schedulinghttps://www.luogu.org/problem/P2949贪心策略:根据工作的结束时间进行排序(如果结束时间相同,再根据价值排序)。 之后从头开始扫描,判断第 iii 个任务能否在截止时间完成,如果能,则直接加入堆中,如果不能,则将堆中的最小值拿出,...原创 2019-08-07 17:01:51 · 226 阅读 · 0 评论 -
二分专项——训练
P1873 砍树https://www.luogu.org/problem/P1873直接二分 HHH 可能的的取值即可,最小从0开始,最大到1000000000,因为此处用的二分是左开右闭,所以 l=0,r=1000000000+1l=0,r=1000000000+1l=0,r=1000000000+1Java代码只能得 70分,其中有三个点内存爆了。想全过,可以改成cpp代码/**...原创 2019-08-08 11:43:01 · 133 阅读 · 0 评论 -
二分专项——基础
二分是在原序列有序的基础上进行二分操作二分搜索可以应用于 最大值最小化 或 最小值最大化 等问题上cpp的STL库中有std::lower_bound() 第一个大于等于你值的数,std::upper_bound() 第一个大于你值的数关于怎么写二分,最好的就是抄STL的源码,,,(逃lower_boundint lower_bound(int *array, int size,...原创 2019-08-08 11:21:10 · 110 阅读 · 0 评论 -
贪心专项——训练
HDU-1009https://vjudge.net/problem/HDU-1009简单贪心 直接从J[i]F[i]\frac{J[i]}{F[i]}F[i]J[i]最大的开始取即可。/** *HDU - 1009 *@author Hongchuan CAO */import java.util.Arrays;import java.util.Scanner;import ...原创 2019-08-05 23:18:45 · 187 阅读 · 0 评论 -
排序专项——基础
主要记录各种排序算法排序算法基础:(强烈推荐)https://www.cnblogs.com/onepixel/articles/7674659.html#!comments基础参考上面的链接即可。本文主要是代码实现。1. Bubble Sort (冒泡排序)...原创 2019-07-31 15:53:55 · 157 阅读 · 0 评论 -
贪心专项——排序
题目链接https://www.luogu.org/problem/P1209每次贪心从间隔最大的两个之间断开/** * P1209 * @author Hongchuan CAO */import java.util.Arrays;import java.util.Scanner;import java.util.logging.Logger;public class M...原创 2019-08-03 20:59:23 · 230 阅读 · 0 评论