![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
温酒知莲华
这个作者很懒,什么都没留下…
展开
-
[LintCode]140.快速幂
计算an % b,其中a,b和n都是32位的整数。样例例如 231 % 3 = 2例如 1001000 % 1000 = 0思路:类似于实现c语言中的pow函数。double pow( double x, double y );计算x的y次幂。首先我们要知道取模运算的乘法法则: (a * b) % p = (a % p * b % p) % p原创 2017-08-10 18:49:18 · 317 阅读 · 0 评论 -
char组成的字符串循环右移n个
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg” 函数头是这样的: //pStr是指向以'\0'结尾的字符串的指针//steps是要求移动的n#include using namespace std;void move(char* pStr,int steps){ if (pSt原创 2017-10-13 18:02:20 · 1508 阅读 · 0 评论 -
八进制 输入一个整数,将其转换成八进制数输出
输入一个整数,将其转换成八进制数输出。 输入:12 输出:14输入:9 输出:11#include using namespace std;int main(){ long a; cin >> a; cout << ((a / 8) * 10) + a % 8 << endl; system("pause"); return 0;}原创 2017-10-13 13:32:42 · 6300 阅读 · 2 评论 -
[LintCode]413.反转整数
将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。样例给定 x = 123,返回 321给定 x = -123,返回 -321class Solution {public: /* * @param n: the integer to be reversed * @return: the reversed in原创 2017-10-05 23:16:05 · 275 阅读 · 0 评论 -
寻找奇数出现II 位运算
给定一个整型数组arr,其中有两个数出现了奇数次,其他的数都出现了偶数次,找到这两个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。给定一个整形数组arr及它的大小n,请返回一个数组,其中两个元素为两个出现了奇数次的元素,请将他们按从小到大排列。测试样例:[1,2,4,4,2,1,3,5],8返回:[3,5]class OddAppearance {原创 2017-09-01 18:24:40 · 282 阅读 · 0 评论 -
寻找奇数出现 位运算
有一个整型数组A,其中只有一个数出现了奇数次,其他的数都出现了偶数次,请打印这个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。给定整形数组A及它的大小n,请返回题目所求数字。测试样例:[1,2,3,2,1],5返回:3class OddAppearance {public: int findOdd(vector A, int n) {原创 2017-09-01 18:09:02 · 223 阅读 · 0 评论 -
交换 位运算
请编写一个算法,不用任何额外变量交换两个整数的值。给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。测试样例:[1,2]返回:[2,1]class Swap {public: vector getSwap(vector num) { num[0]=num[0]^num[1];原创 2017-09-01 17:41:03 · 442 阅读 · 0 评论 -
比较 位运算
对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。给定两个整数a和b,请返回较大的数。测试样例:1,2返回:2class Compare {public: int getMax(int a, int b) { int c=a-b; int temp=sign原创 2017-09-01 17:59:17 · 318 阅读 · 0 评论 -
记录
#include #include using namespace std;int main(){ int count=0; float m = 100, sum = 100, n; cin >> n; while (m>n){ m = m / 2; sum = sum + m*2; count++; } cout << count << " " << sum <<原创 2017-09-25 20:52:43 · 197 阅读 · 0 评论 -
[LintCode]1.A + B 问题 位运算
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。说明a和b都是 32位 整数么?是的我可以使用位运算符么?当然可以样例如果 a=1 并且 b=2,返回3思路:利用位运算来解决A+B的原创 2017-08-19 22:05:45 · 306 阅读 · 0 评论 -
[LintCode]371.用递归打印数字
用递归的方法找到从1到最大的N位整数。 注意事项用下面这种方式去递归其实很容易:recursion(i) { if i > largest number: return results.add(i) recursion(i + 1)}但是这种方式会耗费很多的递归空间,导致堆栈溢出。你能够用其他的方式来递归使得递归的深度最多只有原创 2017-08-20 00:28:06 · 397 阅读 · 0 评论 -
[LintCode]4.丑数 II
设计一个算法,找出只含素因子2,3,5 的第 n 大的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12..注意事项我们可以认为1也是一个丑数样例如果n = 9, 返回 10只包含因子2,3,5 的数称为丑数 。思路:从第二个数开始,每一个数为第p2个数的二倍、第p3个数的三倍、第p5个数的五倍中最小的一原创 2017-08-19 19:38:30 · 367 阅读 · 0 评论 -
[LintCode]9. Fizz Buzz 问题 第一次Java实现
描述给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 样例比如 n = 15, 返回一个字符串数组:[ "1", "2", "fizz", "4", "buzz", "fizz", &quo原创 2018-11-17 14:48:30 · 551 阅读 · 1 评论