刷的是寂寞
dreamispossible
书中自有黄金屋
展开
-
逆序打印单链表(四种解法)
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。链表的结构 struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };1.利用栈的特性class...原创 2019-05-18 21:48:10 · 2847 阅读 · 0 评论 -
井字棋
题目描述对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true//扩展到N阶的棋盘同样适用;class Board {public: bool chec...原创 2019-05-31 23:35:13 · 2769 阅读 · 0 评论 -
另类加法
题目描述请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值测试样例:1,2返回:3/* 1. 二进制位异或运算相当于对应位相加,不考虑进位 比如: 1 ^ 1 = 0 ---> 1 + 1 = 0 (当前位值为0,进一位) 1 ^ 0 = 1 ---> 1 + 0 = 1 (当前位值...原创 2019-05-31 23:48:34 · 706 阅读 · 0 评论 -
手套
题目描述在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组l...原创 2019-06-12 23:40:42 · 967 阅读 · 0 评论 -
腾讯面试题,如何寻找一个数组里面唯一不重复的元素?要求时间复杂度o(n)和空间复杂度o(1)
找出不重复的数题目描述: 有一组存放 ID 的数据。并且 ID 取值为 0 - (N-1) 之间,其中只有一个 ID 出现的次数为 1,其他的 ID 出现的次数都等于 2,问如何找到这个次数为 1 的 ID ? 解法一:巧用数组下标 我的第一想法便是...原创 2019-06-07 22:08:22 · 2575 阅读 · 0 评论 -
m的n次方
如果让你求解 2 的 n 次方,并且不能使用系统自带的 pow 函数,你会怎么做呢?这还不简单,连续让 n 个 m 相乘就行了,代码如下:int pow(int n){ int tmp = 1; for (int i = 1; i <= n; i++) { tmp = tmp * m; } return...原创 2019-06-07 22:14:03 · 4273 阅读 · 0 评论 -
找出不大于N的最大的2的幂指数
传统的做法就是让 1 不断着乘以 2,代码如下:int findN(int N){ int sum = 1; while (true) { if (sum * 2 > N) { return sum; } sum = sum * 2; } } &nbs...原创 2019-06-07 22:25:12 · 4705 阅读 · 2 评论 -
阶乘相关的一些面试题
案例一 给定一个整数 N,那么 N 的阶乘 N! 末尾有多少个 0?例如: N = 10,则 N!= 3628800,那么 N! 的末尾有两个0。 有些人心想,这还不简单,直接算出 N!的值,然后用除以 10 来判断多少个 0 就可以了。 ...原创 2019-06-08 16:39:15 · 1048 阅读 · 0 评论 -
数字和为sum的方法数
题目描述给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。输入描述:输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数A [i] (32位整数),以空格隔开。输出描述:输出所求的方案数#include<...原创 2019-06-10 23:09:31 · 809 阅读 · 0 评论 -
跳石板
题目描述小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6-...原创 2019-06-10 23:16:23 · 759 阅读 · 0 评论 -
删除排序数组中的重复项(I和 II)
描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定...原创 2019-06-25 23:49:40 · 789 阅读 · 0 评论 -
一看就懂的贪心算法
写在前面的话今天我介绍的主题是贪心算法。这是相对比较容易的一种算法。我这里不给出定义,因为大家可以自行网络搜索。咱们直接看例子。贪心算法,如果不用手动证明一个问题的数学性质的话,其实是比较简单的。看这样一个例子:假设有一个背包,其最大容量是50KG,现在有各种不同价值的液体,比方说,有水,其价值是10 每千克,共100KG;酒精,其价值是20 每千克,共30KG;有油,价值25每千克,共30...原创 2019-06-22 23:28:56 · 1020 阅读 · 0 评论 -
美国节日
链接:https://www.nowcoder.com/questionTerminal/d95d98a2f96e49078cd7df84ba0c9d79和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同。具体规则如下:1月1日:元旦1月的第三个星期一:马丁·路德·金纪念日2月的第三个星期一:总统节5月的最后一个星期一:阵亡将士纪念日7...原创 2019-07-11 18:48:31 · 1737 阅读 · 0 评论 -
斐波那契凤尾
链接:https://www.nowcoder.com/questionTerminal/c0a4b917a15f40a49ca10532ab9019fbNowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。输入描述:输入...原创 2019-07-11 18:50:17 · 905 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
题目描述输入n个整数,输出出现次数大于等于数组长度一半的数。#include<iostream>using namespace std;int main(){ int n = 0; int x = 0; int count[100] = {0}; while(cin >> x) { count[x]++;...原创 2019-05-23 23:51:45 · 805 阅读 · 0 评论 -
字符串中找出连续最长的数字串
题目描述读入一个字符串str,输出字符串str中的连续最长的数字串#include<iostream>#include<string>using namespace std;int main(){ string str,cur,ret; cin >> str; for(int i = 0; i<= str.length(...原创 2019-05-23 23:43:56 · 1733 阅读 · 0 评论 -
删除公共字符
题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”#include<iostream> #include<string>using namespace std;int main(){ // 注意这里不能使用cin接...原创 2019-05-20 00:01:03 · 790 阅读 · 0 评论 -
组队竞赛:牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:如果牛牛把6个队员划分到两个队伍如果方案为:team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总...原创 2019-05-20 00:05:22 · 1790 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面(三种解法)
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。1.利用两层循环(类似于冒泡排序)class Solution {public: void reOrderArray(vector<int> &array) { ...原创 2019-05-20 23:39:10 · 1129 阅读 · 0 评论 -
字符串转整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述输入一个字符串,包括数字字母符号,可以为空输出描述如果是合法的数值表达则返回该数字,否则返回0class Solution {public: ...原创 2019-05-20 23:44:14 · 687 阅读 · 0 评论 -
计算糖果
题目描述A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别...原创 2019-05-24 22:29:28 · 841 阅读 · 0 评论 -
进制转换
题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)#include<iostream>#include<string>...原创 2019-05-24 22:42:13 · 716 阅读 · 0 评论 -
排序子序列
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2输入描述:输入的第一行为一个正整数n(1 ≤ n ≤ ...原创 2019-05-21 23:56:25 · 1098 阅读 · 1 评论 -
倒置字符串(两种解法)
题目描述将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I第一种解法#include <iostream>#include <string> #include <algorithm> using namespace std;int main(){ string s; g...原创 2019-05-22 00:05:32 · 5588 阅读 · 0 评论 -
合并两个排序的链表(递归&非递归)
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。(1)递归版本/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: L...原创 2019-05-27 00:10:19 · 942 阅读 · 0 评论 -
二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) {...原创 2019-05-17 20:21:36 · 181 阅读 · 0 评论 -
替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if(str == nullptr || length <...原创 2019-05-17 20:57:25 · 215 阅读 · 0 评论 -
两种排序方法
题目描述考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:1.根据字符串的字典序排序。例如:“car” < “carriage” < “cats” < "doggies < “koala”2.根据字符串的长度排序。例如:“car” < “cats” < “koala” < “doggies” < ...原创 2019-05-27 22:13:12 · 1080 阅读 · 0 评论 -
求最小公倍数
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。#include<iostream>using namespace std;int gab(int a,int b){ int r = 0; while(r ...原创 2019-05-27 22:31:45 · 695 阅读 · 0 评论 -
如何优雅的反转单链表以及变种形式
【题目描述】反转单链表。例如链表为: 1->2->3->4反转后为: 4->3->2->1【要求】 :如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1).【解答】方法1这道题还是挺简单的,当我们在反转一个节点的时候,把一个节点的后驱改为指向它前驱就可以了。这里需要注意的点就是,当你把当前节点的后驱指向前驱的时候,这个时...原创 2019-08-20 19:23:25 · 1187 阅读 · 1 评论