自定义博客皮肤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)
  • 资源 (4)
  • 收藏
  • 关注

原创 [Leetcode 138] Copy List with Random Pointer

题目 复制带有随机指针的链表:一个单链表除了next指针外还有一个random指针随机指向任何一个元素(可能为空) 《剑指offer》上的面试题26分析代码

2015-07-27 10:42:21 1599

原创 [Leetcode 160] Intersection of Two Linked Lists

题目 给定两个链表,求两个单链表的交点。要求时间复杂度为O(n),空间复杂度为O(1)分析代码采用方法二/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {

2015-07-27 09:51:43 372

原创 [Leetcode 142] Linked List Cycle II

题目 不用额外的空间,返回单链表中环的入口。分析 利用快慢指针的方法判断该单链表是否有环,一个指针从快慢指针相遇的位置,一个指针从链表头结点位置,同时每次移动一步,在两个指针相遇的地方就是单链表环的入口推导 代码/** * Definition for singly-linked list. * struct ListNode { * int val; * Lis

2015-07-26 20:19:25 269

原创 [Leetcode 141] Linked List Cycle

题目判断单链表里是否有环分析 用两个指针P1和P2,P1每次走一步,P2每次走两步,如果链表中有环,两个指针一定会在环中相遇。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x)

2015-07-26 19:55:29 317

原创 [Leetcode 234] Palindrome Linked List

题目 判断一个单向链表是否是回文链表,要求在O(n)的时间复杂度,O(1)的空间复杂度。分析 方法一:利用栈先进后出的性质,将链表的前半段压入栈中,在逐个弹出与链表后半段比较,时间复杂度O(n),但需要n/2的栈空间,空间复杂度为O(n); 方法二:翻转链表法,将链表后半段原地翻转,再将前半段、后半段依次比较,判断是否相等,时间复杂度为O(n),空间复杂度为O(1),满足题目要求。

2015-07-26 19:27:01 377

原创 查找单链表的中间节点

因为单链表只能向后查找的原因,查找单链表的中间节点,最一般的解法是,先遍历一次链表得到链表的长度,然后再遍历一半链表,得到链表中间元素。 还有一种比较机智的办法是,利用快慢指针,设两个指针,一个指针每次走一步,一个指针每次走两步,当每次走两步的指针到达链表尾部的时候,每次走一步的指针刚好到达链表中间。Node * findMiddleNodeOfLinedList(Node *head){

2015-07-26 17:18:15 450

原创 [Leetcode 25] Reverse Nodes in k-Group

题目分析 1. 方法一:题目中提到可以采用常数量个空间,所以想到了,采用一个大小为k的数组空间来存储group值,然后利用遍历k步前记录的链表起始地址,来修改这个k-Group链表的值。(修改的是链表中存储的值,而非链表指针) 2. 方法二:先遍历k步,记录k-Group链表的起始地址,和终止地址,然后调用一个链表翻转的子函数,对这个记录下起始地址和终止地址的链表翻转操作。(需要遍历两遍链

2015-07-26 16:39:50 318

原创 237、Delete Node in a Linked List [Leetcode]

题目 给定单链表的一个节点(不是最后一个节点),请删除它分析 没有表头,如何找到这个节点的前一个节点? 方法:采用“懒删除”,当前节点复制下一个节点的内容,然后删除下一个节点C代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *n

2015-07-25 18:45:33 320

原创 206、Reverse Linked List [Leetcode]

题目描述分析 思路:把当前节点作为已经翻转结果的新表头节点C代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* h

2015-07-25 18:33:37 309

原创 92、Reverse Linked List II [Leetcode]

Reverse Linked List II 题目描述 在链表原位置上,翻转位置m到n上的结点,指遍历链表一次分析 如何找到第m个元素和第n个元素 如何处理前面和后面 1.保存前面部分最后一个元素 2. 保存后面部分第一个元素 3. 特殊情况都有哪些:是否需要修改头指针C代码/** * Definition for singly-linked list. *

2015-07-25 18:18:31 323

原创 31. 连续子数组的最大和

题目描述 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)。解析 1. 解法一: 看到这个题目,我们首先想到的是求出这个整型数组所有连续子数组的和,长度为n的数组一共有 n(n+2)/2个子数组,因此要求出这些连续子数组的和最快也需要O(n^2)的时间复杂度。但是题目要求的O(n)的时间复杂度,因此上述思路不

2015-07-24 16:23:25 439

原创 38. 数字在排序数组中出现的次数

题目描述 统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3, 由于3在这个数组中出现了4次,因此输出4.解析 1. 解法一: 该解法是最直观的解法,可以先使用二分查找先找到这个元素,然后分别向左和向右遍历,把左右相同的元素的个数都计算出来。 该方法很直观,当算法的效率太低。 2.解法二: 可以将

2015-07-20 16:33:15 332

原创 24. 二叉搜索树的后序遍历序列

题目描述 输入一个整数数组,判断该整数数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。假设输入数组的任意两个数字都互不相同解析 在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树结点的值,它们都比根结点的值小,第二部分是右子树结点的值,它们都比根结点的值大。主要代码实现bool V

2015-07-20 16:29:14 361

原创 8. 旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 解析 1. 递增数组的旋转,例如,数组{1 2 3 4 5},经过旋转可以是{2 3 4 5 1},{3 4 5 1 2},{1 2 3 4 5},{

2015-07-19 15:07:41 313

原创 6. 重建二叉树

题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。解析 根据先序遍历和中序遍历还原二叉树的主要思想: 1、先序遍历序列的第一个元素必定是根节点,可以由此获

2015-07-19 12:30:10 334

原创 实现两个N*N矩阵的乘法 矩阵用一维数组表示

简介注意下标 和 参数的传递。用一维数组存储二维数组,编程时候注意元素下标。实现代码//N*N矩阵相乘void NmultiplyNmatrix( int *A, int *B, int *C, int N){ for( int i=0; i<N; i++) { for( int j=0; j<N; j++) {

2015-07-15 17:46:38 1152

数据结构线性表学习笔记总结

数据结构线性表学习笔记总结 线性表-顺序存储-链式存储-循环链表-双链表 知识点总结-代码实现

2015-05-29

跟我一起写makefile

跟我一起写makefile

2015-04-29

C程序设计语言(第2版·新版)习题解答

答案代码可以直接copy使用,非常清晰不用担心,不是PDF,不是word,切换题时非常方便

2013-04-21

空空如也

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

TA关注的人

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