个人主页:熬夜磕代码丶
作品专栏: 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. Hadoop的存储架构介绍
  2. TranslateMessage()的困惑
  3. 例子:倒计时按钮可用
  4. mysql帐户权限replace_mysql 用户管理和权限设置
  5. CF1100F Ivan and Burgers
  6. Scala与Java差异(三)之函数
  7. java图像风格迁移_多说迁移,Java开发模仿自主实现评论(一)
  8. OPC数据访问方法简介
  9. ubuntu安装nginx报错:Failed to start A high performance web server and a reverse proxy server
  10. 扒站工具Teleport Pro教程
  11. Hadoop配置文件( hadoop-env.sh、core-site.xml、hdfs-site.xm、mapred-site.xml、yarn-site.xml、 slaves)详解
  12. 马哥linux视频笔记,马哥linux培训第四天笔记
  13. 传智播客黑马程序员_Hanselminutes播客48-适用于极客和程序员的入门棋盘游戏
  14. Medium之1468.计算税后工资
  15. 微信开发工具使用git
  16. strongswan与sangfor的ikev2配置
  17. 常见传感器和芯片的介绍
  18. Excel快速入门02
  19. arduino leonardo 入门
  20. simplexmlelement object php,php – 访问SimpleXMLElement对象的某些属性

热门文章

  1. java wgs84 百度坐标,百度坐标转WGS84(即GPS)坐标
  2. android ip v6 teredo,Win7系统通过teredo连接IPv6的方法
  3. BJDCTF_2nd PWN复盘
  4. 韩寒做错了(update 4 12)。
  5. Matlab去除图片上水印
  6. 快速翻译整篇pdf外文文献
  7. c语言中next如何用,C++ STL prev()和next()函数用法详解
  8. 【微信小程序】video视频组件问题
  9. 【Python-Numpy】numpy.random.binomial()的解析与使用
  10. html遮罩点击,点击按钮实现遮罩效果