![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程题
文章平均质量分 63
lidanyang666
这个作者很懒,什么都没留下…
展开
-
数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。法一:如果存在一个数字出现次数超过数组长度的一半,那么排序后的数组的中位数一定为要求的数字。转换为求第n/2大的数字。然后判断该数字出现次数是否大于长度的一半。class Solution ...原创 2018-04-24 16:38:35 · 165 阅读 · 0 评论 -
O(logn)求斐波那契数列
代码:double Power(double base,int exp){ if (exp==0) return 1; if (exp==1) return base; double result=Power(base,exp>>1); result*=result; if (exp&0x1==1...原创 2018-07-20 14:57:42 · 507 阅读 · 0 评论 -
二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class...原创 2018-04-28 15:22:04 · 96 阅读 · 0 评论 -
数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int number=0; if (!data.empty()) { int len=data.size(); int fi...原创 2018-04-28 12:16:09 · 91 阅读 · 0 评论 -
两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。法一:在链表一上顺序遍历每个结点,每遍历一个结点,顺序遍历链表二。时间复杂度为O(mn)法二:利用两个辅助栈,遍历两个链表,将链表元素放入栈中,从栈顶取,直到两个元素不一致时结束,则对应的就为第一个公共结点,时间复杂度O(m+n),空间复杂度O(m+n)法三:遍历两个链表求其长度,让长的链表先走若干步,然后在遍历两链表,若元素相等则为公共结点,不等则继续向下...原创 2018-04-28 11:03:56 · 92 阅读 · 0 评论 -
数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,size<=2...原创 2018-04-28 09:57:49 · 100 阅读 · 0 评论 -
给定一个整数,判断该数是否是回文数
#include <iostream>using namespace std;bool judge(int n){ int help=1; while(n/help>=10) help*=10; while(n!=0) { if(n/help!=n%10) { return false; break; } n=(n%help)/10; help/=100; }...原创 2018-05-18 15:37:07 · 1042 阅读 · 0 评论 -
第一次只出现一次的字符
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置class Solution {public: int FirstNotRepeatingChar(string str) { if (str.empty()) return -1; const int table=256; ...原创 2018-04-26 17:27:21 · 109 阅读 · 0 评论 -
丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。法一:以空间换取时间,提高了效率class Solution {public: int GetUglyNumber_Solution(int index) { if (index<=0) ...原创 2018-04-26 16:20:08 · 317 阅读 · 0 评论 -
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。class Solution {public: string PrintMinNumber(vector<int> numbers) { string result; vecto...原创 2018-04-25 23:08:56 · 112 阅读 · 0 评论 -
1到n整数中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。法一 :class Solution {public: int NumberOf1Between1AndN_So...原创 2018-04-25 17:56:12 · 164 阅读 · 0 评论 -
打印1到最大的n位数
输入数字n,按顺序打印出从1到最大的n位十进制数,如:输入3,则打印出1,2,3,......999。void PrintN(int n){ if (n<=0) return ; char *number=new char[n+1]; memset(number,'0',n); number[n]='\0'; while(!Inc...原创 2018-07-20 16:56:45 · 121 阅读 · 0 评论