原题链接在这里:https://leetcode.com/problems/count-sub-islands/
题目:
You are given two m x n binary matrices grid1 and grid2 containing only 0's (representing water) and 1's (representing land). An island is a group of 1's connected 4-directionally (horizontal or vertical). Any cells outside of the grid are considered water cells.
An island in grid2 is considered a sub-island if there is an island in grid1 that contains all the cells that make up this island in grid2.
原题传送门
1. 题目描述 2. Solution 1、思路分析 先序遍历(根、左、右)。
2、代码实现
package Q0199.Q0113PathSumII; import DataStructure.TreeNode; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /* a typical backtracking problem. */ public class Solution { public List<List<Integer>> pathSum(TreeNode root, int targetSum) { List<List<Integer>> paths = new ArrayList<>(); List<Integer> path = new LinkedList<>(); findPaths(root, targetSum, path, paths); return paths; } private void findPaths(TreeNode root, int targetSum, List<Integer> path, List<List<Integer>> paths) { if (root == null) return; path.add(root.val); if (root.
1. 启动时加载 1.1 - static new 1.2 - static class new2. 延迟加载 2.1 - synchronized 2.2 - 双重锁检查 + volatile 2.3 - Java9中引入AtomicReference3. 枚举实现 public class SingletonDemo { //1. 启动时加载 // 1.1 - static new // 1.2 - static class new //2. 延迟加载 // 2.1 - synchronized // 2.2 - 双重锁检查 + volatile // 2.3 - Java9中引入AtomicReference //3. 枚举实现 public static void main(String[] args) { System.out.println(SingletonV11.getInstance() == SingletonV11.getInstance()); System.out.println(SingletonV12.getInstance() == SingletonV12.
前言 23种设计模式中有一种叫代理模式。
Spring的核心=IOC+AOP
IOC的底层工厂解耦合 AOP的底层使用的就是动态代理 动态代理 代码模拟动态代理
目标对象(明星): 原始对象
代理对象(明星的经纪人):帮助原始对象的对象,一般用于在不改变原始对象的前提下,在原始对象的基础上增加新的功能。
关于英语学习的近期总结
1.教材
教材,我认为以会议内容为主;不管是内容,词汇,表达,都是以实战为主.
这种内容最贴近你的要求.
关于知心英语,其实,也不错,但是,可以稍微晚一点.
二.步骤
收集文档---->文章分析---->单词学习----->听力学习----->中转英的表达学习
学习的目的,就是要完全学会里面的所有单词.
同时,通过慢速听力,把里面的句子完全听懂.
其次,通过翻译,你转化完中文;你要把句式转化为你的表达方式..
三.进度
整个5月,前半个月,基本上完成了3篇文章的学习.
一方面,的确是基础太差,需要积累的东西太多.
另外一方面,你要提高学习时的专注力.
下一次计划..
本月,你至少应该再完成4篇文章.
两个会议,一个专业立崎,一个专业TI文章.
一.前言 本学期开始接触java到现在已经有10周时间,在这十周之间里,我已经学习了很多关于面向对象的知识,做了老师布置给我的习题,其中包括Pta图形类设计的题目,链表功能的实现,期中考试题目,以及课后自学内容。
二.学习总结 1.作业总结 1.PTA图形设计7-1---7-4 (1)7-1 代码:
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import static java.lang.Math.sqrt; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine().trim(); double[] mainDouble; double sum; if(!Tf(line)){ System.out.println(Wrong Format); } else { if(!points(line)){ System.out.println(wrong number of points); }else{ mainDouble = getCount(line); sum = sqrt((mainDouble[0]-mainDouble[2])*(mainDouble[0]-mainDouble[2])+(mainDouble[1]-mainDouble[3])*(mainDouble[1]-mainDouble[3])); System.out.println(sum); } } } public static boolean Tf(String line){ String Str=([\\+|-]?([0]|([1-9]((\\d)?)+))(\\.\\d+)?\\,([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?(\\s([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?\\,([+\\-]?([0]|([1-9]((\\d)?)+)))(\\.\\d+)?)+); return line.
JavaWeb基本格式;
Controller 页面 + 请求域 > 浏览器页面 URL > Controller 页面 + 请求域 > 浏览器页面 ...........
当前页面从服务器返回到浏览器时经过的Controller
根据光标位置找到页面发向后台的Controller请求
Controller ---> 页面 (URL)---> Controller ---> 页面 Referer : 第一次页面发送的URL
简介 本文会全面介绍shell脚本的基础知识。
脚本格式 要把shell命令放到一个“脚本”当中,有一个要求:脚本的第一行必须写成类似这样的格式:
#!/bin/bash bash是一个shell解释器,用来解释shell命令。
我们先来写一个最简单的shell脚本,文件命名为1.sh:
#!/bin/bash echo hello! 如果我们的系统使用的是其他的解释器,就要将/bin/bash修改成相应的名字。
注意:脚本文件默认是没有执行权限的,想执行这个脚本必须给它添加权限:
zzc@zzc-virtual-machine:~/share/example$ ./1.sh -bash: ./1.sh: 权限不够 zzc@zzc-virtual-machine:~/share/example$ chmod +x 1.sh zzc@zzc-virtual-machine:~/share/example$ ./1.sh hello! 变量 shell脚本语言是一种弱类型语言,在脚本当中使用变量不需要也无法指定变量的“类型”。 默认状态下,shell脚本的变量都是字符串,即一连串的单词列表。
(1)变量的定义和赋值
myname=hello kitty
注意:赋值号两边没有空格;在shell脚本中,任何时候给变量赋值,赋值号两边一定不能有空格。 另外,变量名也有类似于C语言那样的规定:只能包含英文字母和数字,且不能以数字开头。
(2)变量的引用 在变量前面加上一个美元符号,表示对变量进行引用: $myname
zzc@zzc-virtual-machine:~/share/example$ myname=hello kitty zzc@zzc-virtual-machine:~/share/example$ echo $myname hello kitty (3)变量的种类 shell脚本中有如下几种变量。
普通的用户自定义变量,如上面的myname 系统预定义好的环境变量,如PATH 命令行变量,如 $#、$*。 如何查看系统的环境变量? 可以输入以下命令:
zzc@zzc-virtual-machine:~/share/example$ env SHELL=/bin/bash WINDOWID=8388615 QT_ACCESSIBILITY=1 COLORTERM=truecolor XDG_CONFIG_DIRS=/etc/xdg/xdg-ukui:/etc/xdg XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 GTK_IM_MODULE=fcitx LANGUAGE=zh_CN:en_US:en QT_AUTO_SCRENN_SET_FACTOR=0 ...... 如何设置环境变量? 以PATH为例,如果想要将其修改为dir/,可以这么做:
覆盖技术:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)。不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存。 不可同时被访问的程序段共享同一个覆盖区 必须由程序员声明覆盖结构,操作系统完成自动覆盖。 缺点:对用户不透明,增加了用户编程负担。 覆盖技术只用于早期的操作系统中,现在己成为历史。
交换技术:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些己具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)暂时换出外存等待的进程状态为挂起状态,挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态
1.应该在外存(磁盘)的什么位置保存被换出的进程? 2.什么时候应该交换? 3.应该换出哪些进程?
1.具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式(学过文件管理章节后即可理解)。总之,对换区的IO速度比文件区的更快。 2.交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。 3.可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时可 (注意:PCB会常驻内存,不会被换出外存)
覆盖与交挨的区别:覆盖是在同一个程序或进程中的,交换是在不同进程(或作业)之间的
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search trees. Solution \(BST\) 满足对于中序遍历,得到的节点值为递增序列。所以先中序遍历以后,检查序列是否严格递增即可: