自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 leetcode刷题之队列简单总结

239. 滑动窗口最大值public class MyQueue{ //构建自己的队列及相关方法,add,poll,peek Deque<Integer> deque=new LinkedList<>(); void add(int val) { while(!deque.isEmpty()&&val>deque.getLast()) {//保证队列按照从大到小的顺序, deque.removeLast(); } dequ

2022-01-08 10:13:26 230

原创 leetcode刷题之栈简单总结

20.有效的括号public boolean isValid(String s) { Deque<Character> deque=new LinkedList<>(); for(int i=0;i<s.length();i++) { char ch=s.charAt(i); if(ch=='{') { deque.push('}'); } else if(ch=='(') { deque.push(')'); } e

2021-06-18 15:20:47 316

原创 cve-2019-18634记录

一、 环境配置ubuntu 18.04 virtualbox虚拟机sudo 1.8.25 版本二、漏洞概述CVE-2019-18634是一个sudo 提权漏洞,影响sudo版本为[1.7.1,1.8.31)。具体地,如果pwfeedback配置选项在/etc/sudoers被启用,攻击者可以利用一个bss段溢出漏洞来获取root权限。 pwfeedback配置选项在多数的Linux系统中都不是默认选项,但是在Linux Mint操作系统和Elementary OS上是默认开启的,因此漏洞的危害比较

2021-05-17 20:49:52 1026

原创 leetcode刷题之哈希之基本数据结构使用

242.有效的字母异位词普通版public boolean isanagram(String s,String t) { if(s.length()!=t.length()) { return false; } int[] arr=new int[26]; for(int i=0;i<s.length();i++) { arr[s.charAt(i)-'a']++; arr[t.cha

2021-05-11 15:15:46 164

原创 leetcode刷题之某数之和集锦

1.两数之和public int[] calsum1(int[] nums,int tar) { HashMap<Integer,Integer>map1=new HashMap<>(); for(int i=0;i<nums.length;i++) { if(map1.containsKey(tar-nums[i])) { int[] ans=new int[] {map1.get(tar-nums[i]),i}; return ans; }

2021-05-11 15:07:12 158

原创 leetcode刷题之哈希法系列1

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!哈希表是根据关键码的值而直接进行访问的数据结构。而一般哈希表都是用来快速判断一个元素是否出现在集合里。哈希函数的功能就是将某些内容映射为哈希表上的索引,然后就可以通过查询索引来快速查看这些内容了。常见的三种哈希结构1.数组2.set(集合)3

2021-05-09 00:15:58 161

原创 leetcode刷题之链表之基本操作

public class ListNode{ int val; ListNode next; ListNode(int x){ val=x; } /*ListNode(){} ListNode(int val,ListNode next){ this.val=val; this.next=next; }*/}class MyLinkedList{ int size;//来记录链表长度,每次调用增加节点或者减少节点时修改其值 ListNode head;//设置虚拟节点.

2021-05-08 10:59:07 123

原创 leetcode刷题之链表之环

public ListNode detectCycle(ListNode head) { ListNode slow=head; ListNode fast=head;//开始时快慢指针都指向头节点 while(true) { if(fast==null||fast.next==null)//一开始错是因为少了这个判断,这个判断是检查这个链表是否没有环。如果没有环,那么fast会走到null节点,否则会困在环里面永世历劫 return null;.

2021-05-08 10:17:00 116

原创 leetcode刷题之链表之移除元素

203.移除链表元素解法1:虚拟节点法 ListNode virtualnode=new ListNode(val-1); virtualnode.next=head;//设置虚拟节点,为本题关键,为了处理如果头节点需要删除的情况 ListNode tmp=virtualnode; while(tmp.next!=null) { if(tmp.next.val==val) {//一旦下一个节点val相等

2021-05-08 10:16:48 154

原创 leetcode刷题之回文链表

第一种思路:利用栈public boolean ispalindrome(ListNode head) { Stack<ListNode> stack=new Stack<>(); ListNode tmp=head; while(head!=null) {. //⚠️,不能写成head.next!=null stack.push(head); head=head.next; } while(tmp!=null) {. //同.

2021-05-08 10:16:34 212

原创 leetcode刷题之链表之双指针

下面两道题本质上都是链表求交点问题,有环的链表就用快慢指针(龟兔赛跑思想)来解决,无环的链表则思考如何达成长度相同的路径的目标。141.环形链表public boolean hascycle(ListNode head) { if(head==null||head.next==null) { return false; } ListNode fast=head.next; ListNode slow=head; while(slow!=fast) { if(fast==null||f

2021-05-08 10:16:17 185

原创 leetcode刷题之递归算法简要概述

递归的三大步骤1.明确函数要做什么,也就是定义递归的功能。2.明确递归的结束(退出递归)的条件。3.找到函数的等价关系式,要不断缩小参数的范围模型一:在递去的过程中解决问题function recursion(大规模){ if (end_condition){ // 明确的递归终止条件 end; // 简单情景 }else{ // 在将问题转换为子问题的每一步,解决该步中剩余部分的问题

2021-05-08 10:15:47 156

原创 leetcode刷题之链表之递归

206.反转链表主要有两种解法,双指针迭代和递归方法1.双指针迭代法public ListNode reverseList(ListNode head) { ListNode pre=null; ListNode cur=head;//cur一开始赋值为头节点 ListNode tmp=null;//该变量负责保存cur的下一个节点,起暂存储功能 while(cur!=null) { tmp=cur.next; cur.next=pre;//cur

2021-05-08 10:15:11 282

原创 leetcode刷题之数组之滑动窗口

滑动窗口模版初始化慢指针 = 0初始化 ansfor 快指针 in 可迭代集合 更新窗口内信息(通常是快指针逐增,也就是对右边界进行操作) while 窗口内不符合题意 扩展或者收缩窗口(通常是对左边界进行操作) 慢指针移动 更新答案返回 ans看到题目想到要用滑动窗口法,关键词就在于“连续”,最后所求的大概率是一段连续子序列,同时不改变数组原来的位置。209.长度最小的子数组思路简述题目中要求找出长度最小的连续子数组,那么就要想到用滑动窗口来

2021-05-08 10:14:44 343

原创 leetcode刷题之数组之双指针

27.移除元素思路简述这个题有两种方法,第一种是暴力,另一种是双指针法。而且需要注意的是不能使用额外的数组空间。但这两种方法的本质相同,都是将不等于val的数移到数组左部,或者说,将等于val和不等于val的两部分进行分离。暴力法的核心算法是每当遇到一个等于val的数nums[i]时,就将下标i之后的所有数都向前移一位,移完后将数组nums的size减1。最后返回size;public static int removeelement(int[] nums,int val) { int

2021-05-08 10:14:19 249

原创 leetcode刷题之数组简单刷题记录

1.数组-简单-找到所有数组中消失的数字这道题的收获就是又重温了一下基本概念,空间复杂度和java里面list的使用。**本题思路简述**这个题的难点主要就是在于实现自己编写代码空间复杂度O(1),时间复杂度(n)。通过空间复杂度的要求,可以看出,最好我们自己不要再开辟一个新的数组了,就用题目中已经给的nums数组会比较好一些。主要思路就是对nums进行遍历,将里面每一个数字对应的i进行加n操作,然后再重新进一遍遍历,看看数组里哪一个i对应的nums[i]是小于n的,如果小于,那么就是我们需要

2021-05-08 10:13:02 218

空空如也

空空如也

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

TA关注的人

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