自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AKGWSB 's blog

一个菜鸡的博客

  • 博客(86)
  • 收藏
  • 关注

原创 Linux Shell脚本 变量与流程控制

【Shell脚本的创建简单使用】下面所有操作,都是基于一个已经建立好的 1.sh 脚本变量声明Shell变量的声明和 python 语言的变量声明类似,即变量名=值a=123a=123b=456c="hello world !"值得注意的是等于号的前后不能有空格变量命名规则,要比较规范,不能以下划线,问号什么的开头变量默认类型是字符串,即使 a=123,a其实是“12...

2020-03-31 23:17:11 338

原创 Linux Shell脚本常识,脚本的简单使用

有时候需要用到一次性创建很多目录,或者一些批量的重复操作,我们不希望大量重复的操作,于是有了脚本Shell脚本脚本中的语句,在打开脚本时会被执行,就相当于我们直接输入在控制台上一样,值得注意的是,在脚本中可以引入变量,流程控制语句,或者一些其他的操作创建简单HelloWorld脚本我们需要创建一个文件,以书写我们的脚本,值得注意的是二进制文件的执行和后缀名无关,也就是我们可以不写后缀名,也...

2020-03-31 19:18:20 137

原创 01背包空间优化,完全背包时间优化 的图解

01背包空间优化当初学01背包的时候,会有这样一个状态转移方程:约定:dp[i][j]表示在0~i下标物品中选取,在总金额不超过j的情况下获得的最大价值v[i]表示第 i 下标的物品的价值dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]]+v[i]);dp[i-1][j] 对应不选 【第 i 下标】 的物品dp[i-1][j-v[i]]+v[i]...

2020-03-30 22:39:04 2513 4

原创 线段树 区间最值查询 / 区间更新 简单实现

线段树定义线段 = 一维数组如图:按照下标,二分的将一个一维数组,分为两半,每个线段树节点都代表着原数组中的一段子区间,而叶子节点则代表着长度为1的区间线段树可以用来干什么主要是解决区间问题,比如查询一个区间的最值,给一个区间所有元素加减一个数,或者是求取某个区间的和,对于静态的区间,我们都有比较好的方法,比如【前缀和与差分数组】,【ST做RMQ静态查询】可是这些方法都有缺点:如果我们...

2020-03-30 00:56:28 608

原创 ST表实现RMQ 动态规划思想

做题时如果要频繁查询一个区间的最大值或者最小值,是非常消耗时间的,但是预处理打st表(dp数组)的话,可以实现用常数时间查询区间最值ST表状态定义dp[i][j]表示以 i 下标为区间左端点,包含 2j 个元素的区间的最大元素的值即 dp[i][j] = 区间 [i, i+2^j-1] 的最大元素的值这么定义的好处是:对于一个区间左端点,我们花费O(log(n))的时间就可以列举出以它为左...

2020-03-29 15:13:57 166

原创 Java 多线程:synchronized关键字 简单实现同步

在实现多线程的时候,如果多个线程都对同一个变量进行访问,比如输出字符串,而且输出语句有多条,那么很可能会出现这种情况:A输出到一半,B又插进来输出,然后又是其他的线程插进来,那么输出会变得混乱举个例子可以看到输出语句是互相穿插的import java.util.concurrent.*;class printThread extends Thread { String thname;...

2020-03-28 13:04:18 123

原创 Java ExecutorService管理线程池的简单用法

可以在 java.util.concurrent中找到管理线程池的顶级接口 Executorsimport java.util.concurrent.*;Executors 接口定义了一个 execute()方法,接收一个实例化的Runnable对象,来启动这个任务,不过常用的还是 ExecutorService 类ExecutorService 类继承自 Executors,但是提供相当...

2020-03-27 22:28:01 339

原创 Java 两种简单的方式实现多线程

对于一些应用比如Server,需要对并发做出响应,那么需要用到多线程两种实现多线程的方法:继承 Thread 类实现 Runnable 接口继承 Thread 类继承Thread类 必须重写run方法 ,然后调用start方法,即可执行实现一个打印数字的线程类package concurrent;class printNumThread extends Thread{ ...

2020-03-27 16:41:53 189

原创 LeetCode:315. 计算右侧小于当前元素的个数 分治(逆序对

计算右侧小于当前元素的个数给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入: [5,2,6,1]输出: [2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更...

2020-03-25 19:16:18 206

原创 LeetCode:327. 区间和的个数 逆序对 / multiset / 二分查找+二分插入

给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。说明:最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。示例:输入: nums = [-2,5,-1], lower = -2, upper = 2...

2020-03-25 16:22:23 443

原创 逆序对 归并排序求法 分治思想

逆序对介绍如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则<A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。求解一个数组中逆序对个数其实就是求下标小的大数,那么二话不说先来暴力,暴力显然是O(n2),8太行int unseq(vector<int> &nums){ int...

2020-03-25 13:13:31 334

原创 LeetCode:452. 用最少数量的箭引爆气球 贪心

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend...

2020-03-23 13:35:07 224 1

原创 LeetCode:435. 无重叠区间 贪心+双指针

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]...

2020-03-23 12:07:44 196

原创 LeetCode:406 根据身高重建队列 贪心

假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]...

2020-03-23 09:50:58 182

原创 LeetCode:53 最大子序和 分治法

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。通过次数185,334提交次数371,771来源:力扣(LeetCod...

2020-03-22 22:46:11 377

原创 Linux 文件基本属性及其更改方法

ls -l 与 ll 命令查看文件的详细属性的话,我们往往需要用到这两个命令ls -lll文件基本属性字段可以看到每个文件前面都有一长串的东西,什么dwrx的,这些所标识的意义是:如果某位为 -,那么说明该功能没有权限第一位标识文件类型:常见类型如下- : 普通文件d : 目录文件p : 管道文件l : 链接文件b : 块设备文件c : 字符设备文件s : 套接...

2020-03-22 18:49:17 571

原创 LeetCode:365 水壶问题 bfs+哈希set

有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5,...

2020-03-21 17:02:36 180

原创 C++ 自定义哈希函数使得自制数据类型也可使用STL的哈希set,map

如果想用哈希的时候,但是哈希的目标又不再STL标准的类型内,比如一个自定义的class,就不太方便使用STL默认的哈希函数,比较函数,那么就需要重写了什么是哈希哈希就是搞一大块内存,然后给他们编号,然后通过一定的手段,对每个要存储的对象,尽量通过哈希函数得到不同的值,根据这个值放到对应的内存中冲突假设使用的哈希函数是 %4 ,要存储的数据类型是int,存储 16 和 64 这两个数字的时候...

2020-03-21 16:53:50 3702

原创 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举

资源限制时间限制:2.0s 内存限制:512.0MB采油区域  Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井。被拍卖的整块土地为一个矩形区域,被划分为M×N个小块。Siruseri地质调查局有关于Navalur土地石油储量的估测数据。这些数据表示为M×N个非负整数,即对每一小块土地石油储量的估计值。为了避免出现垄断,政府规定每一个承包商只能...

2020-03-21 15:12:20 945 2

原创 矩阵前缀和应用2:求解(x, y)左上方k*k区域的最大加和 动态规划

【矩阵前缀和:常数时间求一子矩阵的加和】如图,给定一点,要找到这点(包括)左上方的子区域内,使k*k区域所有数字加和最大的矩阵,如图 k=2对于x,y左上方的子矩阵中的某一k*k区域,这个区域只能有四种状态:k*k区域右边缘落在 (x, y) 正上方,问题转换为求解 (x-1, y) 左上方的最大加和的 k*k区域k*k区域下边缘落在 (x, y) 正左方,问题转化为求解 (x, y-...

2020-03-21 12:20:16 341

原创 Java 字节流读取Input/OutputStream 阅读器/书写器 BufferedReader/Writer 读取txt

Input/OutputStream相当底层的字节流读取器,一次读取8位二进制InputStream // 字节输入流OutputStream // 字节输出流对于上面两个流对象,可以抽象地看成串口的发送和接收,一个相当原始的东西,封装一些基本方法以完成读取一个字节,发送一个字节InputStream基本方法// 如果读到结束则返回-1,一般作为循环的终止条件// 无参数的re...

2020-03-20 19:08:24 537

原创 矩阵前缀和应用1:最大和子矩阵 前缀和+动态规划

关于矩阵前缀和【矩阵前缀和:常数时间求一子矩阵的加和】给一个m*n的矩阵,找到一个子矩阵使其里面的数字加和最大,输出这个最大值首先想到暴力算法:枚举矩阵行列,复杂度O(n4),然后对每个枚举的子矩阵,计算矩阵内的加和O(n2),总复杂度O(n6)通过前缀和,可以把计算加和的时间变为O(1),总复杂度O(n4),还是有点大优化:引入动态规划中的最大子区间问题【类似的题目】已知一个一维数...

2020-03-20 15:43:22 324

原创 矩阵前缀和:常数时间求一子矩阵的加和

关于一维数组的前缀和【差分与前缀和,数组的常见预处理技巧】一维数组的前缀和实现了常数时间内求取一个区间的加和,同样地,二维数组的前缀和也是在常数时间内求取某个区间的所有元素加和如果有一维数组a(下标从1开始),他的前缀和数组为sum(sum[0] = 0)我们轻易的知道:区间[l, r]的元素加和 = sum[r]-sum[l-1]同样的,一个矩阵的子矩阵,假设有 r 行 c 列,那么其实...

2020-03-20 13:40:49 425

原创 洛谷 P1282 多米诺骨牌 01背包

【传送门】题目描述多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。对于图中的例子,...

2020-03-19 18:12:43 129

原创 蓝桥杯:试题 算法训练 星际交流 康托展开

题目资源限制时间限制:1.0s 内存限制:256.0MB问题描述  人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样 的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回 答。  火星人用一种非常简...

2020-03-18 19:53:45 242

原创 蓝桥杯:试题 算法训练 星际交流 全排列next permutation

题目资源限制时间限制:1.0s 内存限制:256.0MB问题描述  人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样 的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回 答。  火星人用一种非常简...

2020-03-18 19:11:12 192

原创 LeetCode:496/503 下一个更大元素 I / II 单调栈及单调栈性质总结

关于单调栈的其他题目:单调栈的用处是快速找到左右边第一个小于/大于栈顶元素的元素【LeetCode:402 移掉k位数字】【LeetCode:84. 柱状图中最大的矩形】下一个更大元素 I给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大...

2020-03-17 17:57:32 158

原创 LeetCode:84. 柱状图中最大的矩形 暴力/分治/单调栈解法

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:ht...

2020-03-17 15:45:35 404

原创 LeetCode:402 移掉k位数字 贪心 / 单调栈

给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。示例 1 :输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。示例 2 :输入: num = “10200”, k ...

2020-03-17 11:44:52 229

原创 Java 利用socket,简单的server/client回显程序

Java的socket好像是基于tcp的,一些底层的东西,现在只是记录如何使用一些顶层的API来完成简单应用,底层原理,协议,以后再说。。。。服务端socket像一种通道,或者【串口】的概念,需要打开一个ServerSocket对象,作为接收侦听的【服务端】,然后ServerSocket需要打开侦听,也就是accept,这个举动会像一个while语句一样一直进行,直到有客户端连接,那么它会返回...

2020-03-16 22:59:36 327

原创 LeetCode:376 摆动序列 贪心/动态规划

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差...

2020-03-16 22:43:37 200

原创 LeetCode:面试题08.06汉诺塔 用栈模拟递归过程的一些总结

如果有的题目要求不能用递归,必须借助栈来完成,那么情况就会稍显复杂如果递归是返回一个值,那么我们可以通过动态规划来求解,如果是递归进行一些操作,比如汉诺塔,那么我们只能用栈模拟这个过程比如题目【面试题 08.06. 汉诺塔问题】在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大...

2020-03-16 13:37:39 266

原创 UVA810 筛子难题 A Dicey Problem

【传送门】输入格式输出格式样例DICEMAZE13 3 1 2 5 1-1 2 45 5 66 -1 -1DICEMAZE24 7 2 6 3 66 4 6 0 2 6 41 2 -1 5 3 6 15 3 4 5 6 4 24 1 2 0 3 -1 6DICEMAZE33 3 1 1 2 42 2 34 5 6-1 -1 -1END输出DICE...

2020-03-16 00:30:27 193

原创 Linux 文件操作:进入退出查看增删目录,剪切与复制

基操必须会,做个笔记查看当前目录pwd = Print Working Directory 打印当前工作目录pwd列举目录下所有文件ls = list 链 列表,即列出当前目录下所有的文件ls改变目录cd = Change Directory 改变目录cd 进入用户主目录cd ~ 进入用户主目录cd . 当前目录cd .. 进入上一层目录cd - 返回...

2020-03-15 19:04:20 405

原创 UVA806 空间结构 Spatial Structures 搜索

题目传送门题意翻译一个四分树是由一个方格的结构组成的,如图:(就是上面的三个图)。那些像素点可以构成一个四分树,如图:(就是上面的那个树)。我们规定,NW=1,NE=2,SW=3,SE=4,而一个节点所构成的数字串可以认为是一个五进制数,将它们排序后输出。例如:上图中地四号节点的路径为NE,SW,所以是32(5进制) = 17(十进制)那么上树所对应的一传数列为:(在十进制下)9 ...

2020-03-15 17:37:41 235

原创 LeetCode:43 字符串相乘 模拟

题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数...

2020-03-15 13:46:23 100

原创 LeecCode:407 接雨水 II 优先队列+BFS

题目给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。说明:m 和 n 都是小于110的整数。每一个单位的高度都大于 0 且小于 20000。示例:给出如下 3x6 的高度图:[ [1,4,3,1,3,2], [3,2,1,3,2,4], [2,3,3,2,3,1]]返回 4。如上图所示,这是下雨前...

2020-03-14 23:52:26 147

原创 LeetCode 42:接雨水 动态编程

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:ht...

2020-03-14 17:56:37 193

原创 LeetCode 42:接雨水 双指针+模拟

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:ht...

2020-03-14 17:44:57 144

原创 LeetCode:316 去重重复字母 贪心

题目给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-dup...

2020-03-14 16:00:44 244

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除