剑指offer
梨子的博客
这个作者很懒,什么都没留下…
展开
-
剑指offer-57 和为s的连续正数序列
题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。输入:target = 9输出:[[2,3,4],[4,5]]输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]滑动窗口法头尾指针,最开始头指针指向数组0下标处,尾指针比头指针多1,而后开始移动,利用等差数列的求和公式来对头尾指针的区间内的元素求和/** *原创 2020-08-21 17:58:20 · 138 阅读 · 0 评论 -
剑指offer-39 数组中出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 500001.哈希法将数组中每个数作为对象的键存进空对象里,下一次循环判该键存在时次数+1,最后统计对象中每个键对应的值如果有大于nums长度一半的就输出时间复杂度O(n),空间复杂度O(n)/** * @param {numb原创 2020-08-20 17:37:05 · 134 阅读 · 0 评论 -
剑指offer-09 用两个栈实现队列
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:...原创 2020-03-13 23:17:54 · 581 阅读 · 2 评论 -
剑指offer-25 合并两个有序链表
目录思路1思路2(迭代)思路3(递归)题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000思路1新定义一个链表,然后分别从l1...原创 2020-03-13 15:41:40 · 85 阅读 · 0 评论 -
剑指offer-65 两数之和
两数之和描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:不能用四则运算符,考虑使用位运算。加法需要处理的最重要的步骤就是进位。在位运算中,异或(^)结果为1是表示两位不同,则是表示这两个数在这一位上一个是0一个是1,在进行“相加”时,不用进位。与(&)运算结果为1是表示两位都为1,则是表示这两个数在这同一位上都是1,需要进位,进位就是左...原创 2020-02-28 16:50:51 · 67 阅读 · 0 评论 -
剑指offer-18 删除链表的节点
描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.常规思路:定义一个暂时变量用来删除节点,注意若要删除a节点,则需使用...原创 2020-02-28 16:51:01 · 157 阅读 · 0 评论