自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Just Do IT

志存高远,脚踏实地。

  • 博客(10)
  • 收藏
  • 关注

原创 Palindrome Linked List

题目大意:判断一个单链表是否是回文串。要求O(n)时间和O(1)空间。 解题思路:快慢指针确定链表中间节点,再逆转后半部分节点,再同时从两端向中间遍历链表。 代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; *

2015-12-20 00:12:08 330

原创 Delete Node in a Linked List

题目大意:删除单链表中的某个节点,限制条件是只给你指向某个节点的指针(保证不会给你指向最后一个节点的指针),让你删除这个节点。 比如 1->2->3->4,给你指向3这个节点的指针,然后让这个链表变为1->2->4 思路分析:由于是单链表,所以我们没有办法获取这个节点前面的一个节点,但是我们可以把后面一个节点的值赋值给当前节点,然后将当前节点指向后面一个节点的后一个节点。 代码如下: vo

2015-12-19 22:59:26 429

原创 快速排序

算法步骤:1、取最左边元素为基准元素。                     2、从右往左,找到一个小于基准元素的位置j,从左往右,找到一个大于基准元素的位置i,交换两个位置的值。                     3、若此时i                     4、若此时i=j,则说明找到了基准元素的最终位置,将该位置的元素同最左边基准元素进行交换。 注意事项一:第2步中必

2015-12-18 15:02:34 317

原创 Add Binary

题目大意:给2个二进制字符串,求它们的和。 比如:a = "11"     b = "1"  返回 “100” 思路分析:模拟加法运算,用一个变量保存进位。 代码如下: char* addBinary(char* a, char* b) { int k, t, carry=0; int alen = strlen(a); int blen = strlen(b);

2015-12-16 17:56:23 504

原创 Simplify Path

题目大意:给一个Unix风格的文件的绝对路径,将其进行简化。例如:                  路径 "/home/", => "/home"                  路径 "/a/./b/../../c/", => "/c" 思路分析:利用栈。 代码如下: char* simplifyPath(char* path) { int i, t=1;

2015-12-16 16:01:51 341

原创 基本排序算法——选择,插入,冒泡

#include void print_arr(int a[], int n) { int i; for(i=0; i<n; i++) { printf("%d%c", a[i], i==n-1 ? '\n' : ' '); } } void selection(int a[], int n) { int i, j, min, t; for(i=0; i<n-1; i++) {

2015-12-16 14:23:48 402

原创 Valid Parentheses

题目大意:给一个字符串,由“(”,“{”,“[” 和 “)”,“}”,“]”六个字符组成,判断这个字符串是否是一个有效的括号组合。 比如“()”和“(){}[]”都是有效的,“(])”就是无效的。 思路:从前往后扫描字符串,如果是左括号就入栈,如果是右括号就与栈顶元素进行比较,匹配的话就将栈顶元素出站,继续向后扫描,不匹配的话直接返回false,字符串扫描完之后,如果栈刚好为空就说明是有效的,

2015-12-09 18:21:34 406

原创 Set Matrix Zeroes

题目大意:给一个m行n列的二维数组,如果某一个位置的值是0,就将该位置所在的整行和整列的值都设置为0.进一步的要求是:额外需要的空间能否控制在O(1) space。 思路分析:第一种直观的思路是使用O(m+n)额外的空间,通过遍历二维数组记录哪些行和哪些列的值将会被全部置为0。第一种思路的代码如下:void setZeroes(int** matrix, int matrixRowSize, i

2015-12-08 23:41:06 810

原创 Spiral Matrix

题目大意:给一个m行n列的二维数组,要求以螺旋顺序返回所有元素。例如二维数组 [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 将返回[1,2,3,6,9,8,7,4,5] 思路分析:每次螺旋一圈作为外层循环,内层循环分为四段,从左往右,从上到下,从右往左,从下到上。先上代码: int* spiralOrder(int** matrix, i

2015-12-07 18:51:17 526

原创 Sort Colors

题目大意:给一个n个元素的数组,由0,1,2三个数组成,要求将这个数组按照从小到大的顺序排列。 直观想法:遍历一遍数组,分别统计0,1,2三个元素的个数,然后根据各个元素的个数将原来的数组进行覆盖。这种方法需要对数组进行两轮遍历,第一轮遍历统计个数,第二轮遍历覆盖原数组。 改进想法:一次遍历即可将原数组排好序。一般来说排序算法都不太会是O(n)时间复杂度的,这道题之所以能做到这一点是因为只有3

2015-12-07 15:46:29 419

空空如也

空空如也

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

TA关注的人

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