太阳照常升起 
  • 首页
  • 归档
  • 分类
  • 标签
  •     

链表之双指针

下面两道题本质上都是链表求交点问题,有环的链表就用快慢指针(龟兔赛跑思想)来解决,无环的链表则思考如何达成长度相同的路径的目标。 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||fast.next==null)
 2021-05-06   leetcode    链表  双指针 

递归算法简要概述

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

数组之滑动窗口

滑动窗口模版 初始化慢指针 = 0 初始化 ans for 快指针 in 可迭代集合 更新窗口内信息(通常是快指针逐增,也就是对右边界进行操作) while 窗口内不符合题意 扩展或者收缩窗口(通常是对左边界进行操作) 慢指针移动 更新答案 返回 ans 看到题目想到要用滑动窗口法,关键词就在于“连续”,最后所求的大概率是一段连续子序列,同时不改变数组原来的位置。滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。 209.长度最小的子数组 思路简述题目中要求找出长度最小的连续子数组,那
 2021-05-04   leetcode    数组  滑动窗口 

数组之双指针

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

数组简单刷题记录

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

日常记录3

今日刚看完汇编语言的第四章,就觉得自己又可以了,兴冲冲想去做个题试试。结果直接垮掉,没拿到flag(宽面条泪),梁静茹给的勇气不靠谱啊!罢了,虽然失败,还是说说主要的解题过程吧(不然也没啥好讲的)。首先下载文件,ida查看代码。然后分析漏洞,利用漏洞写出exp,最常用的是用到python的pwntools。最后使用nc或者pwntools连接到虚拟场景实现漏洞攻击得到flag。另外贴一些解题过程中用到的好文链接关于栈溢出基础,这篇文章讲的真的超超超详细,相当感动了。附链接:栈溢出基础栈溢出常用解题套路:栈溢出解题类型常用解题套路:我是套路另外,发一下mac10.15可以用的IDA pro下载链
 2020-07-07   二进制安全    pwn 

日常记录2

深感自己汇编学的不扎实,要花很多时间才能去掌握稍微复杂些的程序的思路结构。但要学的内容又总和汇编打交道。故决定用王爽老师的汇编语言一书重新再学习遍,网盘链接如下:https://pan.baidu.com/s/11eMlmBux_WZWIX4gEYYjew 提取码:07Z6今日只把前三章最基础的部分看了一遍,这本书的确写得深入浅出,点赞,明天要继续努力拜读。另外,希望表妹们明天考试一定一定一定要顺顺利利的啊,保佑保佑🙏
 2020-07-06   二进制安全    pwn 

mit 6.828-lab1-第一次记录

提交文章时赫然看到上一次更新的时间,明晃晃挂着的三月两字刺痛了我的双眼,手里的炸鸡顿时不香了。原来不知不觉间已经当了这么多月的咸鱼??唉,以后一定要天天坚持更博。再更一篇讲讲实验开始过程吧。整个开始过程一言以蔽之:我以为的不是我以为的,但或许有可能真是我以为的。一开始运行都蛮顺利,让本万年非酋窃喜不已。直到运行make qemu-gdb时,弹出的窗口栏上出现的“stopped”打破了我的幻想。可是为什么为什么为什么?为什么什么错误提示也找不到?遍寻原因无果,且确认lab和qemu都没有下载错后,我以为可能会是虚拟机的问题,于是乎删了virtualbox重下了vmware和ubuntu镜像。然鹅
 2020-07-05   MIT6.828    操作系统 

日常记录

之前一直用的蓝灯近期突然崩了,思来想去,觉得还是不要偷懒了。故决定自行搭建一个梯子,幸运的是找到了一篇相当靠谱的教程,链接如下:V2ray+WS+TLS+Web梯子详细教程认真讲,这种奶妈式教程真是我等菜鸡的福音啊!真希望可以变成这种造福群众的大佬(请不要叫醒我)简单说一下过程吧 注册vultr账号,购买vps。 到腾讯云购买域名,并输入已购vps的ip进行解析 脚本安装v2ray服务端,首先要下ssh软件putty,mac下装putty有点点麻烦,具体步骤如下所示:mac下载putty另外,mac的v2rayU的下载链接:v2rayU 提取码:7jgb 原本想做一个pwn题试试,然而事实
 2020-07-05  
1234

搜索

Hexo Fluid