剑指offer
胡桃夹子的梦想
bit+lzu计算机渣渣一枚,已成为社畜,追梦国产单机,望各位多多指教
展开
-
【剑指offer】只用加减求1+2+3+...+n(C++)
目录题目描述测试用例解决方案求解思路Solution:短路求值 题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 测试用例 输入正整数n,返回1~n的累加和。 测试用例:给定n=5,返回15。 解决方案 求解思路 在没有方法限制的情况下,我们很容易想到下列求解方法 (1)等差数列求和公式 求1~n累加和的公式如下: 可见,需要乘除法的参与。 (2)循环 for/while语句循环执行n次加法,如 int r原创 2020-06-20 09:09:22 · 343 阅读 · 0 评论 -
【剑指offer】不用加减乘除做整数加法(C++)
目录题目描述测试用例解决方案Solution1:由低到高按位累加Solution2:整体迭代相加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 测试用例 输入两个整数num1、num2 返回值int:两数之和 解决方案 【补码】 计算机中存整数n是用补码存的。 如果n为正数,则 原码=反码=补码; 如果n为负数,则 补码=反码+1。 故两整数的加法可转化为两个补码的加法,不需要考虑正负。 【思路】 很容易想到是用位运算解决,用到的位运算符是 按位与&、按原创 2020-06-19 17:31:21 · 123 阅读 · 0 评论 -
【剑指offer】把字符串转换成整数(C++)
目录题目描述测试用例解决方案 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 测试用例 输入str:输入一个字符串,包括数字字母符号,可以为空; 返回值int:合法的数值则返回该数字,否则返回0; 用例1:str="+2147483647"; 返回值2147483647。 用例1:str="-1a33"; 返回值0。 解决方案 正数情况下,当前值为res,待加入数字字符为c,则新的res = 10res + (c-‘0’); 正负号原创 2020-06-19 14:55:23 · 245 阅读 · 0 评论 -
【剑指offer】寻找长度为n,值范围[0,n-1]的数组中第一个重复的数字(C++)
目录题目描述测试用例解题方案Solution1:哈希+遍历Solution2:in-place算法Solution3:in-place算法plus 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 测试用例 给定数组{2,3,1,0,2,5,3}和数组长度7; 返回值true,并将第原创 2020-06-19 08:16:20 · 411 阅读 · 0 评论