牛客网刷题——斩获offer

简介: 牛客网刷题——斩获offer

一、数列的和

数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
在这里插入图片描述

import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            double sum = 0;
            double n = a;
            while(b > 0) {
                sum += n;
                n = Math.sqrt(n);
                b--;
            }
            System.out.printf("%.2f\n",sum);
        }
    }
}

二、寻找奇数

现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。
在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();   
        int ret = 0;
        for(int i = 0 ;i < n;i++) {
            ret ^= scanner.nextInt();
        }
        System.out.println(ret);
    }
}

三、数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
在这里插入图片描述

public static int duplicate (int[] numbers) {
        Arrays.sort(numbers);
        int n = -1;
        for (int i = 0; i < numbers.length-1; i++) {
            if(numbers[i] == numbers[i+1]) {
                n = numbers[i];
                return n;
            }
        }
        return n;
    }

    public static void main(String[] args) {
        //数组中重复的数字
        int[] arr = {2,3,1,0,2,5,3};
        int n = duplicate(arr);
        System.out.println(n);
    }

在这里插入图片描述

四、替换空格

请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
在这里插入图片描述

public static String replaceSpace (String s) {
        char[] arr = s.toCharArray();
        int length = arr.length;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == ' ') {
                length += 2;
            }
        }
        char[] ch = new char[length];
        length--;
        for (int i = arr.length-1; i >= 0; i--) {
            if(arr[i] != ' ') {
                ch[length--] = arr[i];
            } else {
                ch[length--] = '0';
                ch[length--] = '2';
                ch[length--] = '%';
            }
        }
        String str = new String(ch);
        return str;
    }
    public static void main(String[] args) {
        //替换空格
        System.out.println(replaceSpace("We Are Happy"));
    }

在这里插入图片描述

五、旋转数组最小数字

有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。
在这里插入图片描述

public int minNumberInRotateArray(int [] array) {
        int left = 0;
        int right = array.length-1;
        while(left < right) {
            int mid = (left + right) / 2;
            if(array[mid] > array[right]) {
                //最小数在右边
                left = mid + 1;
            }else if(array[mid] == array[right]) {
                right--;
            }else {
                right = mid;
            }
        }
        return array[left];
    }

六、二进制中1的个数

输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。
在这里插入图片描述
在这里插入图片描述

public int NumberOf1(int n) {
       //二进制中1的个数
        int count = 0;
        while(n != 0) {
            if((n & 1) == 1) {
                count++;
            }
            n >>>= 1;
        }
        return count;
    }

特别注意这里负数统计1的个数时,如果是逻辑右移,每次它都会在前面补1,我们这里用到的是无符号右移

目录
相关文章
|
机器人 Go
【LeetCode】剑指 Offer <二刷>(6)
【LeetCode】剑指 Offer <二刷>(6)
45 0
|
算法
【LeetCode】剑指 Offer <二刷>(2)
【LeetCode】剑指 Offer <二刷>(2)
56 0
|
Go C++
【LeetCode】剑指 Offer <二刷>(4)
【LeetCode】剑指 Offer <二刷>(4)
50 0
|
存储
【LeetCode】剑指 Offer <二刷>(3)
【LeetCode】剑指 Offer <二刷>(3)
35 0
|
设计模式 算法 网络协议
社招offer-腾讯T9-70W年薪(面试经验分享)(上)
社招offer-腾讯T9-70W年薪(面试经验分享)
|
存储 应用服务中间件 nginx
社招offer-腾讯T9-70W年薪(面试经验分享)(下)
社招offer-腾讯T9-70W年薪(面试经验分享)
社招offer-腾讯T9-70W年薪(面试经验分享)(下)
|
Go 索引
【LeetCode】剑指 Offer <二刷>(1)
【LeetCode】剑指 Offer <二刷>(1)
49 0
【LeetCode】剑指 Offer <二刷>(7)
【LeetCode】剑指 Offer <二刷>(7)
31 0
|
编译器 Go
【LeetCode】剑指 Offer <二刷>(5)
【LeetCode】剑指 Offer <二刷>(5)
53 0
|
设计模式 前端开发 算法
面经分享:美团面试也太难了!4面美团终成Offer
这篇文章分享我一个学弟的美团实习面试经历,万万没想到现在大厂实习面试也这么难,下面是他的面经,各位读者老哥可以参考浏览。 美团我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会。10月23日中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准备好网络环境。结果5点半还没打电话过来,被放鸽子。与hr重新沟通过后,确定下周一下午再面,可是跟hr沟通预约这一套貌似在美团并没有什么用。