leetcode-54-螺旋矩阵
螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]
示例 2:
12输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
定义两个向量vx和vy,表示按照顺时针方向前进,用d表示前进方向,走到矩阵边缘或者已经遍历过之后用取模的方式改变d的值改变方向。
12345678910111213141516171819class Solution { public List<Integer> spiralOrder(int[][] matrix) { ...
leetcode-88. 合并两个有序数组
合并两个有序数组123456给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
时空复杂度均为O(n+m)123456789101112131415161718class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i=0,j=0; vector<int> nums; while(i<m&&j<n) { ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
leetcode-36-有效的数独
有效的数独请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
注意:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
空白格用 '.' 表示。
示例 1:
1234567891011输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","." ...
多线程
线程的创建继承Thread类
编写程序,开启一个线程,该线程每隔1秒。 在控制台输出“喵喵, 我是小猫咪”
对上题改进:当输出8 次喵喵,我是小猫咪,结束该线程
12345678910111213141516171819202122232425262728293031323334353637383940package com.threaduse;public class Thread01 { public static void main(String[] args) { Cat cat = new Cat(); cat.start(); //启动线程 //当main线程启动一个子线程时,主线程不会阻塞,会继续执行。 System.out.println(Thread.currentThread().getName()); for (int i = 0; i < 8; i++) { try { Thread.s ...
坦克大战游戏
绘图原理
frame类继承JFrame是窗口的框架。
Mypanel类继承JPanel是画布。
重写画布类的paint()方法绘制图形。
在框架类中初始化画布类,将画布加入窗口
123456789101112131415161718192021222324252627282930313233343536373839404142434445import javax.swing.*;import java.awt.*;public class draw { public static void main(String[] args) { new frame(); }}class frame extends JFrame{ Mypanel mp = null; public frame() { mp = new Mypanel(); this.add(mp); this.setSize(500,500); this.setVisi ...
acwing-模拟栈
模拟栈实现一个栈,栈初始为空,支持四种操作:
push x – 向栈顶插入一个数 x𝑥;
pop – 从栈顶弹出一个数;
empty – 判断栈是否为空;
query – 查询栈顶元素。
现在要对栈进行 𝑀 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。
输入格式第一行包含整数 𝑀,表示操作次数。
接下来 𝑀 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。
输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。
其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。
数据范围1≤M≤100000,1≤x≤10^9所有操作保证合法。
输入样例:123456789101110push 5querypush 6popquerypopemptypush 4queryempty
输出样例:1234555YES4NO
用数组模拟栈
12345678910111213141516171819202122232425262728293 ...
acwing-双链表
双链表实现一个双链表,双链表初始为空,支持 5 种操作:
在最左侧插入一个数;
在最右侧插入一个数;
将第𝑘 个插入的数删除;
在第 𝑘 个插入的数左侧插入一个数;
在第 𝑘 个插入的数右侧插入一个数
现在要对该链表进行 𝑀 次操作,进行完所有操作后,从左到右输出整个链表。
注意:题目中第 𝑘 个插入的数并不是指当前链表的第 𝑘 个数。例如操作过程中一共插入了 𝑛 个数,则按照插入的时间顺序,这 𝑛 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 𝑛 个插入的数。
输入格式第一行包含整数 𝑀,表示操作次数。
接下来 𝑀 行,每行包含一个操作命令,操作命令可能为以下几种:
L x,表示在链表的最左端插入数 𝑥。
R x,表示在链表的最右端插入数 𝑥。
D k,表示将第 𝑘 个插入的数删除。
IL k x,表示在第 𝑘 个插入的数左侧插入一个数。
IR k x,表示在第 𝑘 个插入的数右侧插入一个数。
输出格式共一行,将整个链表从左到右输出。
数据范围1≤M≤100000所有操作保证合法。
输入样例:123456789101110R 7D ...
acwing-单链表
单链表实现一个单链表,链表初始为空,支持三种操作:
向链表头插入一个数;
删除第 k 个插入的数后面的一个数;
在第 k 个插入的数后插入一个数。
现在要对该链表进行 𝑀 次操作,进行完所有操作后,从头到尾输出整个链表。
注意:题目中第 𝑘 个插入的数并不是指当前链表的第 𝑘 个数。例如操作过程中一共插入了 𝑛 个数,则按照插入的时间顺序,这 𝑛 个数依次为:第 11 个插入的数,第 22 个插入的数,…第 𝑛 个插入的数。
输入格式第一行包含整数 𝑀,表示操作次数。
接下来𝑀 行,每行包含一个操作命令,操作命令可能为以下几种:
H x,表示向链表头插入一个数 𝑥。
D k,表示删除第 𝑘 个插入的数后面的数(当 𝑘 为 0 时,表示删除头结点)。
I k x,表示在第 𝑘 个插入的数后面插入一个数𝑥(此操作中 k𝑘 均大于 0)。
输出格式共一行,将整个链表从头到尾输出。
数据范围1≤M≤100000所有操作保证合法。
输入样例:123456789101110H 9I 1 1D 1D 0H 6I 3 6I 4 5I 4 5I 3 4D 6
输出样 ...
acwing-区间合并
区间合并给定 n 个区间 [li,ri],要求合并所有有交集的区间。
注意如果在端点处相交,也算有交集。
输出合并完成后的区间个数。
例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。
输入格式第一行包含整数 n。
接下来 n 行,每行包含两个整数 l 和 r。
输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。
数据范围1≤n≤100000,−10^9≤li≤ri≤10^9
输入样例:12345651 22 45 67 87 9
输出样例:13
将区间的左右端点存储起来,将左端点排序后分类讨论。
12345678910111213141516171819202122232425262728293031323334353637#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<pair<int,int>> a,res;int main(){ int n; cin&g ...