笔试题
文章平均质量分 56
summer2day
这个作者很懒,什么都没留下…
展开
-
二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。算法思想: 首先选取数组中右上角的数字,如果该数字等于要查找的数字,则查找过程结束; 如果该数字大于要查找的数字,剔除这个数字所在的列; 如果该数字小于要查找的数字,剔除这个数字所在的行。 这样每一步都可以缩原创 2017-11-09 18:35:12 · 159 阅读 · 0 评论 -
替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { //遍历一遍,看一共有几个空格num int num=0;原创 2017-11-09 19:40:48 · 148 阅读 · 0 评论 -
文章标题
题目描述 输入一个链表,从尾到头打印链表每个节点的值 时间限制: 1秒 空间限制: 32768K 方法一:用栈 但是空间超出了限制/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next原创 2017-11-09 20:31:54 · 174 阅读 · 0 评论 -
求1+2+3...+n
题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 时间限制:1秒 空间限制:32768K class Solution {public: int Sum_Solution(int n) { int sum=n; sum&&(sum=sum+Sum_So原创 2017-11-09 20:58:27 · 481 阅读 · 0 评论 -
不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 语言:c/c++ 分析: 求两数之和四则运算都不能用,那还能用什么啊?对呀,还能用什么呢?对数字做运算,除了四则运算之外,也就只剩下位运算了。位运算是针对二进制的,我们也就以二进制再来分析一下前面的三步走策略对二进制是不是也管用。 5的二进制是101,17的二进制10001。转载 2017-11-09 21:18:35 · 168 阅读 · 0 评论 -
把字符串转换成整数
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0class Solution {public原创 2017-11-09 21:59:41 · 232 阅读 · 0 评论 -
数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。输入:[2,4,1,2,4] 输出:true,2最简单的思路,二重循环。class Solution {public:原创 2017-11-09 22:50:18 · 142 阅读 · 0 评论 -
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 就是求一个数的多少次方,分为正负跟0.class Solution {public: double Power(double base, int exponent) { double ans=1; if(exponent>0) {原创 2017-11-10 14:21:34 · 146 阅读 · 0 评论 -
把数组排成最小的树
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路: 我开始时一直在想是取出每一位进行比较,发现这种不可行。后来看了网上的答案,发现正确的思路是将它们转换成sring来进行比较。比如:3和32,转换成string加起来就是332和323,332>323,原创 2017-11-10 15:17:25 · 203 阅读 · 0 评论 -
二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \原创 2017-11-10 15:48:19 · 139 阅读 · 0 评论 -
树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路: 先判断两个子树的根结点是不是相等,不等的话再判断B是不是包含在A的左子树中、不是的话是不是包含在A的右子树中,这题也是一个递归调用。/*struct TreeNode { int val; struct TreeNode *left; struct TreeN原创 2017-11-10 16:28:43 · 158 阅读 · 0 评论 -
数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法一:用set,遍历有重复的数组就删除,没有重复就插入,最后剩下的两个数就是两个只出现一次的数字。时间复杂度为O(n)class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *nu原创 2017-11-10 19:46:28 · 177 阅读 · 0 评论 -
用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:栈的顺序是先进后出,队列的顺序是先进先出,所以push的操作就是正常的入栈操作,pop是先把stack1中的放到stack2中再出,即负负得正。 注意:在c++中,a=stack1.pop()这样是不对的,因为pop返回的是一个void,所以需要先取出stack1的栈顶元素a=stack1.t原创 2017-11-12 21:40:30 · 137 阅读 · 0 评论 -
旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 其实这道题就是找数组当中最小的元素,跟旋转数组没有啥关系。class Solution {public:原创 2017-11-12 22:01:21 · 122 阅读 · 0 评论 -
斐波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 科普:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn原创 2017-11-12 22:19:55 · 265 阅读 · 0 评论 -
跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloor(int number) { if(number==1||number==2) return number; return jumpFloor(number-1原创 2017-11-12 23:03:27 · 133 阅读 · 0 评论 -
分析下面代码有什么问题?
分析下面代码有什么问题? void test2() { char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1 = 'a'; } strcpy( string, str1 ); }参考答案首先,代码根本不能通过编译。因为数组名str1为 char *const类型的右值类型,根本不能赋值。 再者转载 2017-11-12 23:28:52 · 1842 阅读 · 0 评论 -
变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路;关于本题,前提是n个台阶会有一次n阶的跳法。分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。 f(3) = f(3-1) + f(3-2) + f(3-3) … f转载 2017-11-14 20:34:09 · 195 阅读 · 0 评论 -
重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; *原创 2017-11-20 23:04:31 · 175 阅读 · 0 评论 -
包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 关键:用一个栈去维护最小值。class Solution {public: void push(int value) { datastack.push(value); if(minstack.size()==0||value<minstack.top())原创 2017-11-21 22:24:55 · 160 阅读 · 0 评论 -
栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 思路:class Solution {public: bool IsPopOr转载 2017-11-21 22:50:23 · 180 阅读 · 0 评论 -
【每日leetcode】反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。class Solutio...原创 2018-09-15 16:38:40 · 151 阅读 · 0 评论 -
【每日leetcode】回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2018-09-15 19:42:30 · 134 阅读 · 0 评论 -
【每日leetcode】罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两...原创 2018-09-15 20:27:51 · 364 阅读 · 0 评论 -
【每日leetcode】最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,”flow”,”flight”] 输出: “fl” 示例 2: 输入: [“dog”,”racecar”,”car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。语言:c++class Solu...原创 2018-09-15 22:32:10 · 114 阅读 · 0 评论 -
【每日leetcode】有效的括号
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false ...原创 2018-09-17 16:28:30 · 116 阅读 · 0 评论 -
【每日leetcode】合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4语言:c++/** * Definition for singly-linked list. * struct ListNode { *...原创 2018-09-17 17:20:29 · 97 阅读 · 0 评论 -
【每日leetcode】删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2018-09-18 10:16:31 · 160 阅读 · 0 评论 -
【每日leetcode】移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2018-09-18 10:33:21 · 105 阅读 · 0 评论 -
【每日leetcode】删除链表中的节点
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:双指针法一个指针pre指向head,另一个指针tmp指向head的下一个元素。先不去判断head,从tmp指向的元素开始,pre保存的就是tmp的前一个指针,如果tmp->...原创 2018-09-18 21:41:58 · 128 阅读 · 0 评论 -
【每日leetcode】实现strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2018-09-23 22:48:42 · 390 阅读 · 0 评论 -
【每日leetcode】两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]语言:c++1.暴力法class Solution {public:...原创 2018-09-13 21:13:21 · 110 阅读 · 0 评论 -
[每日leetcode]搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0class So...原创 2018-09-24 20:23:04 · 1704 阅读 · 1 评论 -
【每日leetcode】三数之和、最接近的三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]所用语言:...原创 2018-09-14 22:20:59 · 160 阅读 · 0 评论 -
【每日leetcode】 无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 无重复字符的最长子串是 “abc”,其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 无重复字符的最长子串是 “b”,其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 无重复字符的最长子串是 “wke”,其长度为 3。请注意,答案必须是...原创 2018-09-20 12:33:12 · 112 阅读 · 0 评论 -
【每日leetcode】两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807语言:c++ 思路:从低到高...原创 2018-09-15 15:17:03 · 121 阅读 · 0 评论 -
【每日leetcode】报数
报数序列是指一个整照其中的整数的顺序进数序列,按行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正...原创 2018-09-25 22:18:27 · 2269 阅读 · 0 评论 -
【每日leetcode】加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。———————...原创 2018-09-25 22:58:39 · 190 阅读 · 1 评论 -
【每日leetcode】最后一个单词的长度
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5——————————————————————————————————————语言:c++注意:几种特殊情况:后边带空格的'a '‘hello worl...原创 2018-09-26 22:30:22 · 237 阅读 · 0 评论 -
【每日leetcode】二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”——————————————————————————————————语言:c++class Solution {public: ...原创 2018-09-27 23:12:05 · 194 阅读 · 0 评论