上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 题目:实现pow函数。 题目分析:因为一个一个乘,循环太大,参考矩阵连乘问题:对于n=4的话,可以得出x的平方,然后平方与平方相乘。节省计算次数。对于偶数的幂,只要x的平方多次递归调用即可;对于奇数的幂,只要n-1,就又变成偶数的幂的形式了,无非就是多乘一个x的问题。 代码: class Solut 阅读全文
posted @ 2017-02-06 13:37 Kobe10 阅读(3498) 评论(0) 推荐(0) 编辑
摘要: 题目一:大数相乘。 题目分析:两个大数相加,考虑到数据类型不能表示大数,所以用字符串直接处理两个数。两个数字,用一个数逐位的与另一个数相乘,将所得的乘积逐位相加(注意进位的情况)。最后得到的就是所要的数字。因为m位的数乘以n位的数,最多得到m+n的位数,所以用m+n的数组存储最终结果。这个是代码的计 阅读全文
posted @ 2017-02-06 13:10 Kobe10 阅读(1046) 评论(0) 推荐(0) 编辑
摘要: 题目一:给定一个数组,升序数组,将他构建成一个BST 思路:升序数组,这就类似于中序遍历二叉树得出的数组,那么根节点就是在数组中间位置,找到中间位置构建根节点,然后中间位置的左右两侧是根节点的左右子树,递归的对左右子树进行处理,得出一颗BST 代码: /** * Definition for bin 阅读全文
posted @ 2017-02-06 11:15 Kobe10 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 题目 给定间隔的集合,合并所有重叠间隔。 例如, 给定[1,3],[2,6],[8,10],[15,18] return [1,6],[8,10],[15,18]。 题目分析:合并重叠的数组,这里首先是定义排序规则,给所有数组进行排序,然后合并重叠的就行了。 代码 /** * Definition 阅读全文
posted @ 2017-02-05 11:52 Kobe10 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 题目: 有N个孩子站在一排。 每个孩子被分配一个评分值。 你给这些孩子的糖果满足以下要求: 每个孩子必须有至少一个糖果。 评分较高的孩子比他们的邻居获得更多的糖果。 你必须给的最低糖果是什么? 题目分析:这个题目其实就是简单的遍历问题。一个打乱的数组,每个数字都有一个特定的属性值,相邻两个数字大的数 阅读全文
posted @ 2017-02-05 10:14 Kobe10 阅读(1335) 评论(0) 推荐(0) 编辑
摘要: 题目一:对链表进行排序。 方法一:利用数组进行排序。效率比较低。 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val( 阅读全文
posted @ 2017-02-04 21:11 Kobe10 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 题目: 您将获得两个链接列表,表示两个非负数。 数字以相反的顺序存储,并且它们的每个节点包含单个数字。 添加两个数字并将其作为链接列表返回。 输入:(2→4→3)+(5→6→4) 输出:7 - > 0 - > 8 题目分析:这个是给定两个链表,链表各个位置上面的值想加,链表表示的逆向的整数,其实没差 阅读全文
posted @ 2017-02-04 19:33 Kobe10 阅读(1384) 评论(0) 推荐(0) 编辑
摘要: 题目:实现strstr函数。 这个函数原型 strstr(char *a, char *b),在a中是否包含b这个字符串,包含返回第一个子串的位置,否则返回NULL。 思路:其实这个就是找子串的问题。特殊情况,当b为空的时候,直接返回a;当b不为空的时候,指定start指针,通过两次循环,逐一对st 阅读全文
posted @ 2017-02-04 18:43 Kobe10 阅读(1102) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定两个字word1和word2,找到将word1转换为word2所需的最小步骤数。 (每个操作计为1步)。 您对单词允许以下3种操作: a)插入字符 b)删除字符 c)替换字符 思路: dp[i][j]指把word1[0..i - 1]转换为word2[0..j - 1] 的最小操作数。 阅读全文
posted @ 2017-02-04 17:05 Kobe10 阅读(6677) 评论(0) 推荐(0) 编辑
摘要: 题目一:最长连续回文子串。 问题分析:回文串顾名思义表示前后读起来都是一样,这里面又是需要连续的。分析这个问题的结构,可以想到多种方法。暴力解决的方式,2层循环遍历得出各个子串,然后再去判断该子串是否回文,这样的话O(N)=n的三次方,还有一种是dp解决。 解题方法一:暴力解决的方法。前面已经讲到了 阅读全文
posted @ 2017-02-04 16:13 Kobe10 阅读(3511) 评论(0) 推荐(1) 编辑
摘要: 【解析】 第一次看到这个题目的人,可能不知道ZigZag是什么意思,简单解释一下,就是把字符串原顺序012345……按下图所示排列: 发现所有行的重复周期都是 2 * nRows - 2 对于首行和末行之间的行,还会额外重复一次,重复的这一次距离本周期起始字符的距离是 2 * nRows - 2 - 阅读全文
posted @ 2017-02-04 10:43 Kobe10 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 给定两个二进制字符串,返回它们的和(也是一个二进制字符串)。 例如, a =“11” b =“1” 返回“100”。 直接给出代码吧,就是简单的位运算。从后往前逐位相加(编程int类型),carry记录进位情况。最后在判断最后一位情况。主要是考察十进制转为二进制或者二进制转为十进制 class So 阅读全文
posted @ 2017-02-04 10:38 Kobe10 阅读(3345) 评论(0) 推荐(0) 编辑
摘要: 题目:根据中序和后序遍历构建二叉树 思路:利用递归加上分治的思想。先找到根节点的值,然后在根据中序遍历找到根节点的左右两边的值,然后在递归的处理左右两边的左右子树。这里的关键在于怎么处理递归的左右子树的范围,代码里面详细解释 代码: class Solution { public: TreeNode 阅读全文
posted @ 2017-02-03 21:07 Kobe10 阅读(1617) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个只包含数字的字符串,通过返回所有可能有效的IP地址组合来恢复它。 例如: 给定“25525511135”, return [“255.255.11.135”,“255.255.111.35”]。 (顺序无所谓) 代码: class Solution { public: vector< 阅读全文
posted @ 2017-02-03 19:46 Kobe10 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定整数的排序数组,找到给定目标值的起始和结束位置。 您的算法的运行时复杂性必须是O(log n)的顺序。 如果在数组中找不到目标,则返回[-1,-1]。 例如, 给定[5,7,7,8,8,10]和目标值8, return [3,4]。 思路:这个题目直接使用容器存储出现查找元素的位置。取出 阅读全文
posted @ 2017-02-03 19:28 Kobe10 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 问题一:合并两个排序的链接列表,并将其作为新列表返回。 新列表应该通过将前两个列表的节点拼接在一起来进行。 思路:有两种方式:递归和非递归。我感觉递归的比较简单。给定两个链表,如果l1为空,返回l2,如果l2为空,返回l1. 如果l1节点大于l2,node等于l2当前节点,node->next=(递 阅读全文
posted @ 2017-02-03 19:26 Kobe10 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 题目一: Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For example, If n = 4 and k = 2, a solution is: [ [2,4] 阅读全文
posted @ 2017-02-03 14:41 Kobe10 阅读(2426) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个数组,其中元素按升序排序,将其转换为高度平衡BST。 思路:因为是升序数组,那么中间的数字一定是根节点值,然后在对左右两边的数组进行查找根节点的递归。一次处理左右子树。 /** * Definition for binary tree * struct TreeNode { * int 阅读全文
posted @ 2017-02-03 13:24 Kobe10 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 题目一:将单链表翻转。 思路:有三种方式。 一:用数组存储单链表的值,然后重新逆序赋值,效率较低。 二:利用三个指针,在原来的基础上进行逆序。这种方法比较实用,效率也高。 三:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。需要新建一个链表, 阅读全文
posted @ 2017-02-02 22:45 Kobe10 阅读(9046) 评论(0) 推荐(0) 编辑
摘要: 概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回 阅读全文
posted @ 2017-02-02 16:40 Kobe10 阅读(2436) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页