
剑指Offer编程题
狂热森林
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer:两个链表的第一个公共节点(python)
文章目录两个链表的第一个公共节点方法一:方法二:方法三:两个链表的第一个公共节点题目位置代码位置题目:输入两个链表,找出它们的第一个公共节点。A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 ...原创 2019-01-25 16:49:23 · 389 阅读 · 0 评论 -
剑指Offer题解(Python版)
5.从头到尾打印链表原创 2019-01-23 17:03:07 · 440 阅读 · 0 评论 -
剑指offer:二维数组中的查找元素(python)
文章目录二维数组中的查找元素方法1:方法2:方法3:涉及知识点if matrix == None or target == None:和if not matrix or target is None:的区别是什么?Python中is和==的区别二维数组中的查找元素题目位置(点击链接)代码位置(点击链接)题目:在一个二维数组中,每一行元素都按照从左到右递增的顺序排序,每一列元素都按照从上到...原创 2019-01-23 17:19:24 · 1182 阅读 · 0 评论 -
剑指offer:用两个栈实现队列(python)
[题目位置]代码位置思路:栈的特点是后进先出,队列的特点是先进先出。如现在有两个栈stackIn和stackOut,1,4,5,8,9分别入栈stackIn,出栈时的顺序是98541,按照这个顺序再入另一个栈stackOut,出栈时顺序为14589。class Solution: def __init__(self): self.stackIn = [] ...原创 2019-01-29 14:47:14 · 219 阅读 · 0 评论 -
剑指offer:栈的压入弹出序列(python)
题目位置输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:借助一个辅助栈,我们将压入序列压入辅助栈中,从第一个数字开始,如果下一个弹出...原创 2019-01-30 10:12:09 · 279 阅读 · 0 评论 -
剑指offer:在O(1)时间删除链表结点(python)
题目:在O(1)时间内删除链表结点思路:如果要删除的节点后面有节点,则将该节点内容复制到要删除的节点,并删除该节点。如果要删除的节点在链表头部,直接删除该节点。如果要删除的节点在链尾,遍历至该节点删除。class ListNode(object): def __init__(self): self.val = x self.next = None ...原创 2019-01-30 15:03:32 · 661 阅读 · 1 评论 -
剑指offer:数组中出现次数超过一半的数字(python)
题目位置题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:数组中有数字出现次数超过一半的数字,说明它出现的次数比其他数字出现的总和还要多。因此设置两个变量,一个存储数字num,一个存储数字出现的次数cnt,然后挨个遍...原创 2019-02-19 04:52:15 · 350 阅读 · 0 评论 -
剑指offer:连续子数组的最大和(python)
题目位置题目:给一个数组,返回它的最大连续子序列的和。例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8思路:贪心算法class Solution: def FindGreatestSumOfSubArray(self, array): # write code here if len(array) == 1: ...原创 2019-02-19 15:37:05 · 401 阅读 · 0 评论 -
剑指offer:数组中只出现一次的数字(python)
题目位置题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。思路1:遍历class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here dict = {} ...原创 2019-02-26 17:21:37 · 344 阅读 · 0 评论 -
剑指offer:从头到尾打印链表(python)
从头到尾打印链表题目位置(点击链接)代码位置(点击链接)方法1:思路:硬做,放入列表,翻转列表class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): newList = [] while listNode: ...原创 2019-01-23 16:59:16 · 1208 阅读 · 0 评论 -
剑指offer:合并两个有序链表(python)
文章目录方法一:迭代**ListNode(0)这个是什么意思?****涨姿势的写法:currentNode.next = l1 or l2**方法一:迭代(简化)方法二:递归题目:将两个有序链表合并为一个新的有序链表并返回。题目位置代码位置示例:输入:1->2->4, 1->3->4输出:1->1-&原创 2019-01-29 11:51:43 · 544 阅读 · 0 评论 -
剑指offer:链表中倒数第k个结点(python)
文章目录题目:输入一个链表,输出该链表中倒数第k个结点方法:两个指针题目:输入一个链表,输出该链表中倒数第k个结点题目位置代码位置方法:两个指针为了实现只遍历链表一次就能找到倒数第k个节点,我们定义两个指针fast,slow。让fast先向走k-1步,slow保持不动;从第k步开始,slow也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当fast到达链表的尾节点时,slo...原创 2019-01-25 16:55:58 · 313 阅读 · 0 评论 -
剑指offer:调整数组顺序使奇数位于偶数前面(python)
题目位置题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:初始时,设置两个指针,left指向数组的头部,right指向数组的尾部。从尾部开始判断,如果尾部元素为奇数,则该元素前所有元素依次后移,该元素放置在数组头部。若尾部元素为偶数,则right指针向前判断,同...原创 2019-01-31 13:44:26 · 451 阅读 · 0 评论 -
剑指offer:顺时针打印矩阵(python)
题目位置题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵,则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:这个思路不是剑指offer上面的,我觉得比较简单,搬过来跟大家一起学习下。我们可以把打印一圈分为四步:第一步:从左到右打印一行第二步:从上到下打印一列第三步:从右到左打印一行第四...原创 2019-01-31 22:52:20 · 312 阅读 · 0 评论 -
剑指offer:反转链表(python)
题目位置LeetCode206题目输入一个链表,反转链表后,输出新链表的表头。方法一:递归class Solution:# @param {ListNode} head# @return {ListNode}def reverseList(self, head): prev = None while head: curr = head head = h...原创 2019-02-01 10:59:25 · 439 阅读 · 0 评论 -
删除链表中重复的结点(python)
Leetcode. 82. Remove Duplicates from Sorted List II题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如:输入:1->2->3->3->3->4->4->5->6输出:1->2->5->6class Solution(...原创 2019-02-01 15:29:52 · 858 阅读 · 0 评论 -
链表中是否有环(python)
141. Linked List Cycle题目:判断一个单链表是否有环方法:快慢指针判断是否存在环,用fast和slow两个指针,从head开始,一个走一步,一个走两步,如果最终到达同一个结点,则说明存在环。class Solution(object): def hasCycle(self, head): """ :type head: L...原创 2019-02-01 15:42:15 · 602 阅读 · 0 评论 -
链表中环的入口结点(python)
Leetcode 142. Linked List Cycle II题目给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:head 头节点 E 入口节点 X 首次相遇节点 a 头节点到入口节点距离 H 第一次相遇节点到入口节点的距离 c 环长 慢指针一次一步,快指针一次两步,第一次相遇时,慢指针走了n步...原创 2019-02-01 15:44:06 · 803 阅读 · 0 评论 -
剑指offer:复杂链表的复制(python)
题目位置题目输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。思路在原链表的基础上复制节点,将节点复制在原节点的后面。复制随机节点。将新旧链表分离。# class RandomListNode:# def __init__(self, x):# self.l...原创 2019-02-01 17:10:44 · 287 阅读 · 0 评论 -
剑指offer:数组中重复的数字(python)
题目位置题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路1:先将输入的数组进行排序,再从头到尾遍历排序后的数组,如果相邻的两个元素相等,则存在重复数字。clas...原创 2019-02-26 17:23:43 · 748 阅读 · 0 评论