牛客网刷题——斩获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,我们这里用到的是无符号右移

目录
相关文章
|
存储 自然语言处理 小程序
如何制作产品介绍二维码(一):编辑二维码内容
本篇主要以官方模板「产品详情介绍」为例,教大家如何从0开始制作单个产品介绍二维码。
558 2
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】十大算法之一 “神经网络”
神经网络是一种模拟人脑信息处理方式的算法,其通过神经元之间不断传递信息、调节连接权重等方式进行学习和预测,最终实现数据分类、识别等功能。由于神经网络算法的强大功能和广泛应用,其在过去几十年间经历了多次的发展和变革。神经网络算法是一种非常强大和广泛应用的算法,其在数据分类、预测、图像处理、自然语言处理等领域都有着非常出色的表现。神经网络算法的发展历程从原始的感知机模型到多层神经网络,再到卷积神经网络,反应了机器学习的发展过程,各个模型优点互补,使神经网络在各个领域得以深入应用。
812 0
【机器学习】十大算法之一 “神经网络”
|
12月前
|
自然语言处理 调度 决策智能
Coconut:基于连续潜在空间推理,提升大语言模型推理能力的新方法
Coconut提出了一种新的大语言模型推理范式,通过在潜在空间中运算,利用隐藏层生成的连续思维状态取代传统文本推理。该方法采用广度优先搜索探索多条路径,避免单一路径局限,显著提升逻辑任务性能并减少token消耗。 Coconut结合“语言模式”和“潜在模式”动态切换,通过多阶段课程学习优化推理能力,在复杂规划任务中表现卓越,尤其在GSM8k和ProsQA等任务中优于传统模型。实验表明,Coconut能有效捕获中间变量,减少幻觉错误,具备更强的推理规划能力。
507 2
Coconut:基于连续潜在空间推理,提升大语言模型推理能力的新方法
|
数据采集 人工智能 自然语言处理
阿里云百炼产品月刊【2024年11月】
11月,阿里云百炼平台迎来一系列重大更新,包括推出QwQ、qwen-turbo、qwen-Plus等多个新模型及快照版本,强化AI推理、文本生成、视觉理解等能力。此外,还优化了模型管理、数据处理等功能,提升了用户体验。
1670 0
|
JSON 前端开发 数据格式
@RequestBody、@RequestParm、@PathVariable三个注解的区别
@RequestBody、@RequestParm、@PathVariable三个注解的区别
977 2
|
移动开发 安全 JavaScript
SpringBoot接入微信JSSDK,看这篇妥妥的
这篇教程详细介绍了如何在Spring Boot项目中接入微信JSSDK,实现H5页面的自定义分享和调用相册选取图片等功能。文章首先通过对比理想与现实的分享效果,引出了接入微信JSSDK的必要性。接着,作者提供了GitHub和Gitee上的项目源码链接,并逐步讲解了整个接入过程的关键步骤,包括配置文件、主要类和方法的实现细节,以及必要的微信公众号设置。此外,还特别强调了几个常见问题及其解决方案,如域名绑定、IP白名单设置和签名验证等。最后,通过实际测试验证了功能的正确性。适合初学者快速上手微信JSSDK接入。
396 8
SpringBoot接入微信JSSDK,看这篇妥妥的
|
监控 Linux 测试技术
edac是检测什么的,和centos内存条损害检测工具
【6月更文挑战第1天】edac是检测什么的,和centos内存条损害检测工具
760 2
|
算法 计算机视觉
图像处理之霍夫变换圆检测算法
图像处理之霍夫变换圆检测算法
325 0
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
Java easyexcel 数据库连接
SpringBoot使用EasyExcel将Excel数据直接转换为类对象
SpringBoot使用EasyExcel将Excel数据直接转换为类对象
618 0