摘要: 题目: 输入一个链表,反转链表后,输出链表的所有元素。 思路: 反转链表,对于片段 1 >2 >3循环操作; 要反转链表需要两步: 一,将2->next指向1 (如果不保存3那么此时就丢失了对3的引用) 二,将链表往后移 即 : 1=2; 2=3;3=3->next 注意的点: 一,首节点的next 阅读全文
posted @ 2017-09-13 17:56 llauser 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入一个链表,输出该链表中倒数第k个结点。 思路: 两个指针一个先走k步,然后两个一起走,先走的到达终点时后一个指向的就是所求的节点,注意可能长度小于k,这时候应该返回null 代码: 阅读全文
posted @ 2017-09-13 16:05 llauser 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 两种方式: 一种添加o(n)的空间取得o(n)的时间复杂度; 一种不增加空间:冒泡排序,或者插入排序;时间复杂 阅读全文
posted @ 2017-09-13 15:52 llauser 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方 思路: double型数据base可正可负,所以不能单纯的累乘exponent次; 代码: 阅读全文
posted @ 2017-09-13 15:47 llauser 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路: 通过 1 的左移来和这个整数的每一位进行与操作,计算出二进制中1的个数 代码: 阅读全文
posted @ 2017-09-13 15:32 llauser 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路: f(n)=f(n-1)+f(n-2)+.......+f(1); f(n-1)=f(n-2)+f(n-3)+......+f(1) 所以:f(n)=2f(n-1) 代码: 阅读全文
posted @ 2017-09-13 15:21 llauser 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路: 这是斐波那契数列问题的变体,f(n)表示跳上第n阶台阶的方法数,那么只能从n-1阶跳上去(+1),方法数为调到n-1阶的方法数也就是f(n-1); 或者从n-2阶跳上去(+2),方法数为跳到f 阅读全文
posted @ 2017-09-13 14:57 llauser 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目: 现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39 思路: 递归会导致超时或者超内存的问题,改用循环,因为f(n)=f(n-1)+f(n-2) 所以只需要保留前两个数值就能求出当前的数值 代码: 阅读全文
posted @ 2017-09-13 13:42 llauser 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 栈的特性:先进后出 队列的特:先进先出 将栈1的内容全都弹出,然后推入栈2,弹出栈2 达到先进先出的功能;所以分为push栈 和 pop 栈 代码: 拓展: 用两个队列实现一个栈: 思路: 两个队列 阅读全文
posted @ 2017-09-13 09:37 llauser 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 前序遍历:根 >左 >右; 中序遍历:左 >根 阅读全文
posted @ 2017-09-12 21:48 llauser 阅读(125) 评论(0) 推荐(0) 编辑