剑指offer 25、26:复杂链表的复制、二叉搜索树与双向链表

25题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路:1 2 3 4 NULL 第一步:在原节点后复制新的节点...

2018-06-27 10:22:53

阅读数 38

评论数 0

剑指offer 22、23、24: 从上往下打印二叉树、二叉搜索树的后序遍历序列、二叉树中和为某一值的路径

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:层序,用队列,先进先出。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tr...

2018-06-26 15:06:31

阅读数 46

评论数 0

剑指offer 19、20、21:顺时针打印矩阵、包含min函数的栈 、栈的压入、弹出序列

第十九题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:每一次循环...

2018-06-26 10:29:12

阅读数 55

评论数 0

剑指offer 17、18:树的子结构 、二叉树的镜像

十七题 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路: 十八题 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / ...

2018-06-22 17:57:49

阅读数 50

评论数 0

剑指offer 16:合并两个排序的链表

十六题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路:设置两个指针分别指向这两个递增链表。存储对应小的数,并对应的指针自加。当其中一个链表为空时,则把新链表指向另一个链表。 /* struct ListNode { in...

2018-06-22 17:47:15

阅读数 62

评论数 0

剑指offer 14、15:链表中倒数第k个结点 、反转链表

十四题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路: 1.反转链表,然后求第k个节点 2.利用空间换时间,把链表每个结点都存在vector中 3.链表倒数第k个,就是正数第l-k+1个;利用两个指针,第一个先走k-1个节点,然后第二个开始一起走,这样第二个节点就走了l-k+1...

2018-06-22 17:07:30

阅读数 54

评论数 0

剑指offer 12、13:数值的整数次方、调整数组顺序使奇数位于偶数前面

第十二题题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:类似于第九题,快速幂运算。这一题要分析exponent为负数的情况,且base为0的情况。 复杂度:O(n) class Solution { publi...

2018-06-22 16:28:31

阅读数 76

评论数 0

剑指offer 11:二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:1.逐位进行&判断; 2.n&(n-1)相当于把最右边的1变为0。 10011 &am...

2018-06-22 15:28:52

阅读数 56

评论数 0

剑指offer 8、9、10:跳台阶、变态跳台阶、矩形覆盖

八:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路: 1 1 2 11 2 3 111 12 21 4 1111 22 112 121 211 5 11111 122 212 221 1112 1121 121...

2018-06-22 12:16:52

阅读数 54

评论数 0

剑指offer 7:斐波那契数列

算法知识视频讲解 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 思路:斐波那契可以用递归做,但是容易出现栈溢出,可以把递归改成尾递归的形式;可以用循环做。 //递归 class Solut...

2018-06-22 10:39:17

阅读数 52

评论数 0

剑指offer 6:旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路...

2018-06-22 10:23:52

阅读数 54

评论数 0

贪心算法

引:https://blog.csdn.net/yanerhao/article/details/70162902 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关...

2018-06-21 16:28:19

阅读数 49

评论数 0

网易程序题

[编程题] 牛牛找工作 时间限制:2秒 空间限制:65536K 为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。...

2018-06-20 17:58:48

阅读数 265

评论数 0

背包问题

0-1背包: 每种物品只有一个,选与不选(0-1) 容量为10的背包,有5种物品,每种物品只有一个,其重量分别为5,4,3,2,1,其价值分别为1,2,3,4,5。 设计算法,实现背包内物品价值最大。 #include <iostream&gt...

2018-06-15 13:20:26

阅读数 49

评论数 0

校招全国统一模拟笔试(五月场)

1.牛牛的快递到了,他迫不及待地想去取快递,但是天气太热了,以至于牛牛不想在烈日下多走一步。他找来了你,请你帮他规划一下,他最少要走多少距离才能取回快递。 输入描述: 每个输入包含一个测试用例。 输入的第一行包括四个正整数,表示位置个数N(2<=N&a...

2018-06-15 12:52:38

阅读数 198

评论数 0

剑指offer 5:用两个栈实现队列

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:栈 先进后出,队列 先进先出 1 2 3 栈 3 2 1 1 2 3 队列 1 2 3 stack1进栈后为1 2 3 出栈并保存在stack2中为3 2 1,stack2出栈就...

2018-06-14 17:18:26

阅读数 60

评论数 0

剑指offer 4:重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:中序序列中,节点左边为左子树,右边为右子...

2018-06-14 17:05:25

阅读数 87

评论数 0

剑指offer 3:从尾到头打印链表

题目描述 输入一个链表,从尾到头打印链表每个节点的值。 思路:1.从尾到头,类似先进后出,stack。2.反转链表。 /** * struct ListNode { * int val; * struct ListNode *next; * Lis...

2018-06-14 16:48:06

阅读数 94

评论数 0

剑指offer 2:替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路1:申请辅助空间 思路2:在原数组上修改===》1.从前向后,每次遇到空格,后面的字符都要向后移动,复杂度很高O(n^2)...

2018-06-14 16:26:57

阅读数 235

评论数 0

剑指offer 1:二维数组中的查找

题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:题目中指出是数组顺序排序的,因此可以根据这个条件优化搜索路径。 1.从左上角开始:向右与向下都是增加的,因此...

2018-06-14 15:58:16

阅读数 59

评论数 0

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