算法
常见面试算法
天佑木枫
好记性不如烂笔头
展开
-
算法-int各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。思路:取出数据的每一位,进行相加,直至满足条件。int addDigits(int num){ int sum = 0; while(num > 9){ sum += num%10; num /= 10; } sum +原创 2020-11-19 10:50:16 · 2014 阅读 · 0 评论 -
算法-移动数组中零的位置
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]方法:从第一个数据开始对比,如果为0,就和后面的数据进行一一对换void moveZeroes(int* nums, int numsSize){ for(int i = 0;i < numsSize - 1;i++) { for (int j = i;j < numsSize - 1;j++原创 2020-11-19 10:27:43 · 334 阅读 · 0 评论 -
算法-颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:11111111111111111原创 2020-11-18 16:19:38 · 271 阅读 · 1 评论 -
算法-2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 2^0 = 1示例 2:输入: 16输出: true解释: 2^4 = 16示例 3:输入: 218输出: false思路2的幂,指转化为二进制时,有且只有一位为1也就是说,当数值转化为二进制表达式的时候,其中数字位数为 ‘1’ 的个数,为1个时为真bool isPowerOfTwo(int n){ //当为0、负数、溢出,为false if (n < 1原创 2020-11-18 16:12:04 · 554 阅读 · 0 评论 -
算法-无符号整数中位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为原创 2020-11-18 16:00:42 · 579 阅读 · 0 评论 -
算法-求数组的子数组之和的最大值
一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢?思考 1、题目说的子数组是连续的; 2、题目只需要求和,并不需要返回子数组的具体位置; 3、数组的元素是整数,所以数组可能包含有正整数、零、负整数;举几个例子: 数组:[1, -2, 3, 5, -3, 2]应返回:8 数组:[0, -2, 3, 5, -1, 2]应返回:9 数组:[-9, -2, -3, -5, -3]应返回:-2,这也是最大子数组的和。【解法一】: 直接的方法,记Sum[i,…,原创 2020-11-18 15:33:10 · 1909 阅读 · 0 评论 -
算法-常见的数组排序算法
目录1、冒泡排序2、选择排序3、直接插入排序4、二分插入排序5、希尔(插入)排序6、快速排序7、堆排序1、冒泡排序冒泡排序原理很容易理解,就是重复地走访过要排序的元素列,依次比较两个相邻的元素,顺序不对就交换,直至没有相邻元素需要交换,也就是排序完成。• 冒泡排序是一种稳定排序算法。• 时间复杂度:最好情况(初始情况就是正序)下是o(n),平均情况是o(n²)void buddleSort(int num[],int count){ for (int i = 0; i < coun原创 2020-11-18 15:16:24 · 482 阅读 · 0 评论 -
算法-统计质数数量
统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0什么是质数?除1和本身外都不能整除思路:n=0、1、2时:无质数;n溢出不考虑;从2-n,先去掉2的倍数;然后3的倍数…直到n。int countPrimes(int n){ //判断传入数值,排除负数、0、1、考虑溢出 if(n < 2 || n > INT_MAX原创 2020-11-18 15:00:26 · 649 阅读 · 0 评论