编程练习题
文章平均质量分 86
大风车小转转
目前涉及到的知识领域有: 机器学习,CNN,Java,前端(React,dva,ant design)
展开
-
Leetcode第一题--------- Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums =原创 2016-06-27 23:04:41 · 421 阅读 · 0 评论 -
2. Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a li原创 2016-06-30 07:55:13 · 339 阅读 · 0 评论 -
leetcode-cn 17题:电话号码的字母组合
描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。解题思路回溯法先保存所有的数...原创 2020-03-08 14:17:29 · 203 阅读 · 0 评论 -
leetcode-cn 15题: 三数之和
描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]Java代码示例import ...原创 2020-02-23 23:08:49 · 187 阅读 · 0 评论 -
leetcode-cn 19题: 删除链表的倒数第N个节点
题目来源:leetcode-cn描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解题思路使用两个指针left, rig...原创 2020-02-23 17:09:29 · 114 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:先从头到尾对数组中的每一个数字进行异或运算,得到的结果indexOf1,判断结果的二进制数中倒数第n位是为1,再将数组分为两个子数组,分别为进行异或运算后倒数第n为为1的数字为一组,不为1的数字为一组异或运算中,一个数异或本身的结果为0,最后的到两个子数组中的两原创 2016-12-09 13:55:59 · 232 阅读 · 0 评论 -
数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size对于%75的数据,size对于%100的数据,size输入例子:1,2,3,4原创 2016-11-23 08:57:52 · 247 阅读 · 0 评论 -
左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!解题思路:将每一个字符与之前的它前面第n个字符替换,再将原始前n个原创 2016-12-11 21:09:40 · 217 阅读 · 0 评论 -
输入一个年月日,判断是当年的第几天
解题思路:先判断是否是闰年,再判断月份数n,最后将前n-1 个月有多少天相加,再加上第n个月的天数一种方法是判断闰年,再判断是那个月,直接计算,这种方法就会有12次判断第二种方法是将每年12个月的天数放到一个数组里,在将数组的前n-1 个数字相加,加上第n个月的天数即可;闰年和非闰年的每个月的天数是不同的两个数组//1, 输入一个日期,判断是这一年的第几天#include "...原创 2016-11-15 21:50:58 · 16365 阅读 · 2 评论 -
Leetcode160. 相交链表练习
题目描述输入两个链表,找出它们的第一个公共结点。struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {};class Solution{public: ListNode* FindFirstCommonNode(ListNode *pHead1,原创 2016-12-09 14:01:23 · 204 阅读 · 0 评论 -
和为S的连续正数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所原创 2016-12-09 15:17:01 · 322 阅读 · 0 评论 -
2017 Tencent实习编程题
题目来源:点击打开链接给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子:abcdagoogle输出例子:22思路分析: 可利用最长原创 2017-01-08 13:14:53 · 324 阅读 · 0 评论 -
机器人的运动范围
机器人的运动范围题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?原创 2017-01-08 20:25:49 · 507 阅读 · 0 评论 -
编程题源码链接
练习题基本来源剑指offer,部分代码实现见:剑指offerGithub链接:https://github.com/alvinzxf/offercode.git原创 2017-01-10 11:41:09 · 259 阅读 · 0 评论 -
写一个atoi函数
写一个Atoi函数,实现字符串转换成整型数字int MyAtoi(const char *p) { int result = 0; int flag = 1; if (*p == '-' || *p == '+' || (*p >= '0'&&*p <= '9')) { if (*p == '-') { flag = -1; p++; }原创 2017-03-04 11:24:18 · 604 阅读 · 0 评论 -
按层遍历二叉树
有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。方法一:不使用队列,使用两个类型为TreeNode的vector容器Node,child分别用于存放父结点层和其孩子结点的一层的所有接结点1,遍历原创 2017-03-28 15:44:36 · 553 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:1,后续遍历序列的最后一个数字是根结点的值,数组中的前面的数字可以分两部分,一部分是比根结点值大(左子树部分),一部分比根结点值小(右子树部分)2,先用一个循环找到比根结点值小的数字,则数组中该数字及以前的数字都在左子树中,该数原创 2016-10-19 21:41:30 · 165 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路:用先序遍历的方式访问到某一个结点时,我们把该结点添加到路径上,并累加该结点的值,如果该结点为叶结点并且路径中的结点值的和刚好等于输入的整数,则该路径刚好符合要求,将其打印出来如果不是叶结点则继续访问其子结点,访原创 2016-10-20 12:12:23 · 266 阅读 · 0 评论 -
从尾到头打印链表
题目描述:输入一个链表,从尾到头打印链表每个节点的值。 输入描述:输入为链表的表头输出描述:输出为需要打印的“新链表”的表头解题思路:把链表所有的结点值放入一个vector容器中先把头结点的值放入容器,再把头结点之后的结点值一个一个放入容器struct ListNode{ int val; struct Listnode *next; Li原创 2016-09-11 21:42:57 · 183 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy解题思路:在剑指offer上面有两种解法:解法一:先将字符串扫描,若碰到空格,则将空格替换,后面字符串一次往后面移动;接着对替换后的字符串在进行扫描,重复前面的操作这种方法每扫描到空格,都要将空格原创 2016-09-13 09:53:03 · 303 阅读 · 0 评论 -
重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路: 1,先定义一个新结点head,将先序序列的第一个结点赋值给head,再从中序序列中找到头结点所在的位置, 2,原创 2016-09-16 15:47:19 · 233 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。nclass Solution {public: int Fibonacci(int n) { int i = 1; int first = 1; int second = 1; int sum = 0; if(n <=原创 2016-09-06 22:01:57 · 193 阅读 · 0 评论 -
跳台阶
问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。阶梯思路:先判断n级数,跳一步时:接下来就有jumpFloor(n-1)种;跳两步时接下来有jumpFloor(n-2)种,方法为两种情况之和class Solution {public: int jumpFloor(int number) { int me原创 2016-09-06 22:13:33 · 179 阅读 · 0 评论 -
旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路:解法一:将数组遍历一遍,找出最小的数,时间复杂度为O(n),显然不是最优的解原创 2016-09-19 21:17:52 · 201 阅读 · 0 评论 -
变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:假设有n级阶梯,跳法种数method=f(n);f(0) = 0f(1) = 1f(2) = f(1) + f(0) f(3) = f(2) + f(1) + f(0) ...f(n原创 2016-09-07 19:32:22 · 247 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路:记把2*n的覆盖方法为f(n);先将一个小矩形竖着放:放下之后有 f(n-1)种方法再将小矩形横着放:放下之后有 f(n-2)种方法故n>2时,共有f(n-1)+f(n-2)种方法。class Solut原创 2016-09-08 21:07:07 · 218 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路:1,在计算之前先要检测base和n 的数值是否合法,如base为0或者nbase为0时由于double类型原因,不能直接用等于(==)来判断2,计算base的exponent次方,当n为负数时先n转换为正数,再计算base的exponent次方,原创 2016-09-24 21:56:22 · 166 阅读 · 0 评论 -
从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:该打印过程可以看成按层遍历二叉树,我们用队列来实现结点的打印若二叉树部为空,直接返回空若二叉树不为空:1,首先将二叉树的根节点进队列,将队头的结点出队,并结点值放入vector容器中,并将结点的左孩子结点和右孩子结点进入队列中(左右孩子有可能为空);2,若队列不为空说明队列中还有结点,队原创 2016-10-12 21:10:09 · 242 阅读 · 0 评论 -
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路: 1、复制每个节点,并将该结点的复制结点插入到该结点后面, 如:链表为:A->B->C->D, 经过复制步骤后的链表原创 2016-10-24 10:38:48 · 806 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:1,我们可以利用冒泡排序,从头开始对数组开始扫描,若发现第一个偶数时,取出偶数,则将后面的奇数往前移,并将这个偶数放到第二个偶数的前面;重复扫描这样的时间复杂度为O(n*n)原创 2016-09-28 16:04:21 · 282 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路:用两个指针p,pre指向链表的头结点,先将p向前移动k-1个位置,随后p,pre一起向后移动,当p到达链表尾部时,pre则为倒数第k个结点struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU原创 2016-09-28 16:30:12 · 413 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。解题思路:我们分别用四个指针pReversedHead,pNode,pPrev,pNext来指向反转链表的头结点,原链表的头结点、pNode的前一个结点、pNode的后一个结点在原链表上反转会引起链表的断裂,并且是在pNode所指结点与下一个结点之间断裂,故用pReversedHead,pNode指向当前结点的前一个结点合当前结原创 2016-09-29 14:25:31 · 220 阅读 · 0 评论 -
顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.解题思路:我们将整个打印过程看成从外圈往内圈顺时针方向循环打印的过程,设循环圈数为start,行数为row,列数为c原创 2016-10-06 21:49:12 · 205 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题分析:因为二维数组的每行和每列都是按递增顺序排序了的,故在数组中的数字与目标数字比较时:若目标数字比数组中的数字大,则目标数字的位置只能在数组当前数字所在列的左边与所在行的上边;若目标数字比数组原创 2016-09-10 22:11:16 · 340 阅读 · 0 评论