1. 遍历问题 Preorder / Inorder / Postorder preorder: root left right inorder: left root right postorder: left right root 遇到二叉树的问题,就是一步步的拆分,最常用的就是Divide & Conquer的递归实现 贴一个preorder的例子 Definition of TreeNode: class TreeNode: def __init__(self, val): self.va…
Search in a big sorted array,这个比之前的二分法模板多了一个很不同的特性,就是无法知道一个重要的条件end值,也是题目中强调的重点 The array is so big so that you can not get the length of the whole array directly~所以这里单独分析这个问题~ 一般涉及到sorted array,肯定可以的解决方法是for loop,然而for loop的复杂度是O(n),而且对于这个长度无法衡量的big…
Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).所以我们可以把这个sorted array 分成两部分看,一部分是左半部分的上升区间,然后是最小值,一部分是右半部分的上升区间.以及考虑其中的特例就是翻转后仍是原来的array,一个连续的上升区间. 1. Find Minimum in Rotated Sorted Ar…
二分法不只能像之前的记录,可以找到index~第二种类型是找到二分答案.有以下几个例子,都是之前二分法的扩展,不再赘述,只记录下忽略的点,以后回顾多注意~ 1. wood cut class Solution: """ @param L: Given n pieces of wood with length L[i] @param k: An integer return: The maximum length of the small pieces. ""…
进行二分查找课程回顾与总结,包括以下几个方面,二分法的模板总结和解题思路.应用. 二分法模板总结classical binary search: 1. 必须要做的排除极端情况,也就是数组(用A表示)不存在即A == None或者 A为空,即len(A) == 0 的情况. 2. 二分法核心找的是mid值,并判断这个mid是否跟我们要找的target一致,或者和target之间的关系,所以要先判断start和end.为start和end赋值,start = 0, end = len(A) - 1…
因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很符合套路的:一道栈溢出.一道格式化字符串.一道堆溢出. pwn200 一个栈溢出. 题目给出了libc.保护只有nx. 拿到题后的基本思路就是leak出got表中函数的地址,然后拿libc算偏移算出system的地址.然后用这个地址去覆盖一个函数的got表. pwn300 一个明显的格式化字符串漏洞…
Expression Expand  Word Break II Partition Equal Subset Sum  Expression Expand  字符串展开问题,按照[]前的数字展开字符串,主要是维护两个栈一个是展开个数栈一个是展开内容栈,内容栈添加[用来判断是否把要展开的内容全部推出,然后要注意数字可能不止一位其他就无所谓了 class Solution: # @param {string} s an expression includes numbers, letters an…
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF:路由器漏洞练习靶机 用binwalk解压DVRFbin后,题目位于如下目录中 调试环境配置参考本系列中的前面两篇文章: 通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃 路由器漏洞复现分析第二弹:CNVD-2018-01084 ————————————————————————————…
题目信息 作者:不详 链接:http://poj.org/problem?id=2456 来源:PKU JudgeOnline Aggressive cows[1] Time Limit: 1000MS Memory Limit: 65536K 描述 Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at p…
本文从漏洞分析.ARM64架构漏洞利用方式来讨论如何构造提权PoC达到读取root权限的文件.此题是一个ARM64架构的Linux 5.17.2 版本内核提权题目,目的是读取root用户的flag文件. 概况 题目默认开启了KASLR地址随机化和PXN防护,指定CPU核心数量为一,线程为一. 使用cpio命令分离出驱动模块后放到IDA查看,只实现了read和write函数的功能,功能相当简单.read函数把内核栈内容拷贝到全局变量demo_buf,然后再把demo_buf的内容拷贝到用户态缓冲区…