
数字之谜
张荣华_csdn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
happy number(快乐数)
快乐数的性质:不断循环的结果必定是有限的值,只要用一个set存储,判断是否有重复的值出现即可。class Solution {public: bool isHappy(int n) { set<int> s; while(n!=1) { int t=0; while(n) ...原创 2018-06-05 08:05:06 · 900 阅读 · 0 评论 -
随机函数转化
给定一个等概率随机产生1~5的随机函数,除此之外,不能使用任何额外的随机机制,请实现等概率随机产生1~7的随机函数。(给定一个可调用的Random5::random()方法,可以等概率地随机产生1~5的随机函数)// 以下内容请不要修改class Random5 {public: static int randomNumber();};class Random7 {public: int r...原创 2018-06-20 01:19:34 · 580 阅读 · 0 评论 -
Factorial Trailing Zeroes
Given an integer n, return the number of trailing zeroes in n!.Example 1:Input: 3Output: 0Explanation: 3! = 6, no trailing zero.Example 2:Input: 5Output: 1Explanation: 5! = 120, one trailing zero....原创 2018-07-12 00:17:32 · 195 阅读 · 0 评论 -
Rotate Array
Given an array, rotate the array to the right by k steps, where k is non-negative.Example 1:Input: [1,2,3,4,5,6,7]and k = 3Output: [5,6,7,1,2,3,4]Explanation:rotate 1 steps to the right: [7,1,2,3,4,5...原创 2018-07-12 00:17:48 · 258 阅读 · 0 评论 -
Number of 1 Bits
Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).Example 1:Input: 11Output: 3Explanation: Integer 11 has binary representa...原创 2018-07-12 00:18:09 · 183 阅读 · 0 评论 -
Bitwise AND of Numbers Range
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.Example 1:Input: [5,7]Output: 4Example 2:Input: [0,1]Output: 0从题目中给的例子来...原创 2018-07-13 00:10:49 · 222 阅读 · 0 评论 -
埃拉托斯特尼筛法
埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。...原创 2018-07-13 00:11:02 · 1238 阅读 · 0 评论 -
Count Primes
Count the number of prime numbers less than a non-negative number, n.Example:Input: 10Output: 4Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.class Solution {public: in...原创 2018-07-13 00:11:15 · 325 阅读 · 0 评论 -
数组中数字出现的次数
题目:数组中只出现一次的两个数字。一个整形数组除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。void FindNumsAppearOnce(int data[], int length, int* num1, int* num2){ if(data == nullptr || length < 2) ...原创 2018-07-22 00:13:48 · 1515 阅读 · 0 评论 -
数的分组
题目:有10个任意的正整数,将其分为两组A和B,要求组A中每个数据的和与组B中每个数据的和之差的绝对值最小。#include "stdio.h"#include "math.h"void main(){ unsigned int i,j,k=0,difference=0,r; unsigned int sum_A=0, sum_B=0; int a[10]; ...原创 2018-07-27 00:02:04 · 376 阅读 · 0 评论 -
Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element always...原创 2018-07-09 00:11:39 · 216 阅读 · 0 评论 -
圆圈中最后剩下的数字
题目:0,1,2,,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。思路:定义一个关于n和m的方程f(n,m),表示每次在n个数字中删除第m个数字最后剩下的数字。f(n,m)=[f(n-1,m)+m]%n,n>1; =0, n=1;int LastRem...原创 2018-07-27 00:02:33 · 310 阅读 · 0 评论 -
素数伴侣
题目描述若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当...原创 2018-08-08 10:25:55 · 758 阅读 · 0 评论 -
29. 两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均...原创 2018-08-19 07:05:52 · 269 阅读 · 0 评论 -
格雷码
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。格雷码的特点:1.格雷码属于可靠性编码。它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于方向的转角位移量-数字量的转换中...原创 2018-06-21 01:05:56 · 1815 阅读 · 0 评论 -
最大公约数
问题:求两个正整数的最大公约数方法一:辗转相除法int gcd(int x,int y){return (!y)?x:gcd(y,x%y);}方法二:辗转相减法int gcd(int x,int y){if(x<y) return gcd(y,x);if(y==0) return x;else return gcd(x-y,y);}方法三:利用移位运算和减法运算int gcd(int x,i...原创 2018-06-18 10:07:16 · 389 阅读 · 0 评论 -
Rotate Array
Given an array, rotate the array to the right by k steps, where k is non-negative.Example 1:Input: [1,2,3,4,5,6,7] and k = 3Output: [5,6,7,1,2,3,4]Explanation:rotate 1 steps to the right: [7,1,2,3,...原创 2018-06-05 08:04:53 · 269 阅读 · 0 评论 -
Add Digits
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.Example:Input: 38Output: 2 Explanation: The process is like: 3 + 8 = 11, 1 + 1 = 2. Si...原创 2018-06-13 01:52:49 · 174 阅读 · 0 评论 -
Ugly Number II
Write a program to find the n-th ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example:Input: n = 10Output: 12Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is...原创 2018-06-13 01:51:22 · 189 阅读 · 0 评论 -
寻找奇数
有一个整型数组A,其中只有一个数出现了奇数次,其他的数都出现了偶数次,请打印这个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。给定整形数组A及它的大小n,请返回题目所求数字。class OddAppearance {public: int findOdd(vector<int> A, int n) { // write code here i...原创 2018-06-15 08:48:24 · 364 阅读 · 0 评论 -
方格移动
在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。测试样例:2,2返回:2class Robot {public: int Cmn(int m,int n) { int fenmu1=1,fenmu2=1; int fenz...原创 2018-06-15 08:49:29 · 584 阅读 · 0 评论 -
方格移动
在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。测试样例:2,2返回:2class Robot {public: int Cmn(int m,int n) { if(n==0) return 1; i...原创 2018-06-15 08:49:46 · 514 阅读 · 0 评论 -
格子涂色数
你要在一个nxm的格子图上涂色,你每次可以选择一个未涂色的格子涂上你开始选定的那种颜色。同时为了美观,我们要求你涂色的格子不能相邻,也就是说,不能有公共边,现在问你,在采取最优策略的情况下,你最多能涂多少个格子?给定格子图的长n和宽m。请返回最多能涂的格子数目。只有一种颜色,要想不相邻,每行一个隔一个涂色即可,如果行数或者列数为偶数,最多的格子即为(m/2)*n或者(n/2)*m,显然就是m*n/...原创 2018-06-16 00:33:36 · 3189 阅读 · 0 评论 -
合法的括号序列匹配数
假设有n对左右括号,请求出合法的排列有多少个?合法是指每一个括号都可以找到与之配对的括号,比如n=1时,()是合法的,但是)(为不合法。给定一个整数n,请返回所求的合法排列数。保证结果在int范围内。测试样例:1返回:1class Parenthesis {public: int Cmn(int m,int n) { if(m==n||n==0) r...原创 2018-06-16 00:33:47 · 3419 阅读 · 0 评论 -
卡特兰数公式及应用
令h(0)=1,h(1)=1,catalan数满足递推式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)递推关系的解为:h(n)=C(2n,n)/(n+1) (n=0,1,2,...)递推关系的另类解为:h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)应用:括号化矩阵连乘:...原创 2018-06-17 01:35:28 · 1387 阅读 · 0 评论 -
N!阶层末尾有多少0
对N进行质因数分解,N!=(2^x)*(3^y)*(5*z)*......,由于2*5=10,所以结果只与2和5的个数有关,每一对2和5相乘都能得到一个0,于是min(x,z)就是要求的结果。不难发现x大于等于z,因为能被2整除的数出现的概率要比能被5整除的数高得多,所以求出5的个数即可。int CountZero1(int n) { int ret=0; int i,j; ...原创 2018-06-18 10:06:11 · 459 阅读 · 0 评论 -
N!阶层的二进制表示中最低位1的位置
其实如果最后一位是0,那么进行右移操作,直到最后一位是1结束,也就是求质因子2的个数,然后再加1即可即有:[N/2]+[N/4]+[N/8]......int CountLowestOne(int n) { int ret=0; while(n) { n>>=1; ret+=n; } return ...原创 2018-06-18 10:06:31 · 742 阅读 · 0 评论 -
寻找发帖水王
步骤:1. 可以假设帖子的第一个ID是次数最大的,用candidate记录,次数用nTimes记录。2. 遍历下一个ID,如果跟candidate一样,nTimes++,否则,遇到一个挑战,则nTimes--,如果nTimes == 0,下一步就要重复第一步了。3.遍历结束,nTimes>0的那个candidate就是水王ID,他是获胜者。Type Find(Type* ID, int N)...原创 2018-06-18 10:06:56 · 209 阅读 · 0 评论 -
1-N中1的个数
LONGLONG Sum1s(ULONGLONG n){ ULONGLONG iCount = 0; ULONGLONG iFactor = 1; ULONGLONG iLowerNum = 0; ULONGLONG iCurrNum = 0; ULONGLONG iHigherNum = 0; while(n / iFactor!= 0) { ...原创 2018-06-18 10:07:09 · 597 阅读 · 0 评论 -
319.灯泡开关
初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。示例:输入: 3输出: 1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, ...原创 2018-11-07 12:25:04 · 235 阅读 · 0 评论