个人主页:熬夜磕代码丶
作品专栏: java se
我变秃了,也变强了
给大家介绍一款程序员必备刷题平台——牛客网
点击注册一起刷题收获大厂offer吧

文章目录

  • 一、 随机数组
  • 二、 局部最小值
  • 四、 三个数的最大乘积
  • 三、 阶乘累加

一、 随机数组

通过对数器生成一个随机长度,随机大小的数组

public static int[] randomArray(int maxLen,int maxValue) {int Len = (int)(Math.random() * maxLen);int[] arr = new int[Len];if(Len > 0) {arr[0] = (int)(Math.random() * maxValue);for (int i = 1; i < Len; i++) {do {arr[i] = (int)(Math.random() * maxValue);} while(arr[i] == arr[i-1]);}}return arr;}```

二、 局部最小值

定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0] < arr[1],那么arr[0]是局部最小;
如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i] < arr[i-1],又有arr[i] < arr[i + 1],那么arr[i]是局部最小。给定无序数组arr,已知arr中任意两个相邻的数都不相等,只需要返回arr中任意一个局部最小出现的位置即可,如果不存在这个位置就输出-1。

import java.util.*;
public class Main{public static int oneMinIndex(int[] arr) {if(arr == null || arr.length == 0) {return -1;}if(arr.length == 1) {return 0;}if(arr[0] < arr[1]) {return 0;}int N = arr.length;if(arr[N-1] < arr[N-2]) {return N-1;}int L = 0;int R = N - 1;int ans = -1;while(L <= R) {int mid = (L + R) / 2;if(arr[mid] < arr[mid-1] && arr[mid] < arr[mid+1]) {ans = mid;break;}if(arr[mid] > arr[mid-1]) {R = mid - 1;continue;}if(arr[mid] > arr[mid+1]) {L = mid + 1;continue;}}return ans;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];while(scanner.hasNextInt()){for(int i = 0;i < n;i++) {arr[i] = scanner.nextInt();}}System.out.println(oneMinIndex(arr));}
}

四、 三个数的最大乘积

给定一个长度为 nn 的无序数组 AA ,包含正数、负数和 0 ,请从中找出 3 个数,使得乘积最大,返回这个乘积。

我们先对数组进行排序,然后就上面两个情况的数的大小,因为数组是升序的,从小到大,最大的两个负数乘积就在数组的最前面,最大的三个正数就在数组的最后面,比较两个数即可。

  1. 没有正数,当然负数越小乘积越大,即排序后数组的最后三个数,零大于负数
  2. 没有负数,数越大乘积越大,即排序后数组的最后三个数
  3. 一个负数,排序后的最后三个数乘积最大
  4. 一个正数,即开头的第一个情况。
public long solve (int[] A) {Arrays.sort(A);int n = A.length - 1;return Math.max((long)A[n]*A[n-1]*A[n-2],(long)A[0]*A[1]*A[n]);}

三、 阶乘累加

计算1!+2!+3!……+n!
方法1:暴力求解

public static long f1(int n) {long ans = 0;for (int i = 1; i <= n; i++) {ans += factorial(i);}return ans;}public static long factorial(int n){long ans = 1;for (int i = 1; i <= n; i++) {ans *= i;}return ans;}public static void main(String[] args) {//求阶乘之和Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();System.out.println(f1(n));}

方法二:迭代法

public static long f2(int n) {long ans = 0;long ret = 1;for (int i = 1; i <= n; i++) {ret *= i;ans += ret;}return ans;}public static void main(String[] args) {//求阶乘之和Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();System.out.println(f2(n));}

牛客网刷题——斩获offer相关推荐

  1. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  2. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  3. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  4. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  5. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  6. 【牛客网刷题】中秋节前开启java专项练习错题总结第一天

    [牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...

  7. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

  8. 牛客网刷题——二叉树

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  9. 牛客网刷题 --- 输入输出数据处理

    正确处理输入输出格式 常见的输入格式: 预先不输入数据的组数 - 直接读到文件结尾 预先输入数据的组数 - 读数据组数然后循环 只有一组数据 - 直接读数据 处理输出格式要注意细节,看题目的具体要求 ...

  10. 牛客网刷题-java

    大部分解答为牛客网各位同学的精彩回答,本文只是选择一些互联网常考题目记录备忘. 1.一个类的构造器可以调用这个类中的其他构造器: this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为t ...

最新文章

  1. Java中static关键字总结
  2. 如何开发一个用户脚本系列(3)——脚本一:百度首页和搜索页面添加 Google 搜索框...
  3. 线上oom 自动kill 程序
  4. cmd管道无法接收特定程序返回值_渗透不会反弹shell?来教你写一个cmd的shell
  5. 关于java开发中的实用工具Hutool工具类
  6. java va start_va_start和va_end使用详解
  7. C语言学习笔记---字符串对比函数strspn()和strcspn()函数
  8. 构造函数和方法的区别
  9. C/C++函数调用方式
  10. matlab 轮廓系数,kmeans聚类理论篇K的选择(轮廓系数)
  11. 写HTML为什么骨架生成不了,HTML骨架
  12. 灯哥开源ODRIVE FOC驱动器使用记录
  13. GAIL(Imitating driver behavior with generative adverarial networks)
  14. Html-移动端与响应式
  15. div居中和div内容居中
  16. 基于模糊神经网络PID算法的液位串级控制
  17. 西辽开国皇帝耶律大石:孤独的苍鹰称霸西域
  18. Unix编程艺术和代码大全比较阅读
  19. 33. DDR2内存内部结构-2
  20. Linux的学习之路

热门文章

  1. win7怎么查看计算机主板,win7系统电脑查看主板型号的四种方法介绍
  2. 博科br310交换机级联
  3. 对几款网络抓包工具的评测
  4. Golang FORM相关字段理解
  5. 捋一捋Unified Language Model Pre-training for Natural Language Understanding and Generation
  6. SIM800C AT指令编程
  7. 蓝桥杯0027 通信密码
  8. 短视频后期要做哪些内容?注意细节才能做出优质短视频
  9. 织梦dedeCMS留言薄
  10. 集合-HashTable