寻找旋转排序数组中的最小值 II(数组、二分查找)、打印1000以内的所有素数,并从键盘输入一个正整数,判断是否为素数、数组元素

举报
共饮一杯无 发表于 2023/02/24 10:41:53 2023/02/24
【摘要】 寻找旋转排序数组中的最小值 II(数组、二分查找)已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, ...

寻找旋转排序数组中的最小值 II(数组、二分查找)

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:

  • 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]
  • 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]

注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。
给你一个可能存在 重复 元素值的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素

示例 1:
输入:nums = [1,3,5] 输出:1
示例 2:
输入:nums = [2,2,2,0,1] 输出:0

提示:

  • n == nums.length
  • 1 <= n <= 5000
  • -5000 <= nums[i] <= 5000
  • nums 原来是一个升序排序的数组,并进行了 1 至 n 次旋转

进阶:

解答:

class Solution {
    public int findMin(int[] nums) {
        int left = 0, right = nums.length - 1;
        while (left < right) {
            int mid = (left + right) / 2;
            if (nums[mid] > nums[right])
                left = mid + 1;
            else if (nums[mid] < nums[right])
                right = mid;
            else
                right = right - 1;
        }
        return nums[left];
    }
}

打印1000以内的所有素数,并从键盘输入一个正整数,判断是否为素数

  1. 主类内至少两个方法,boolean prime(int p)方法和main()方法,prime方法判断参数p是否为素数。
  2. 1000以内的素数放入一个数组再打印。
  3. 单行风格,良好可读性,运行结果正确。

解答:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        List<Integer> numList = new ArrayList<>();
        for(int i= 2;i<=1000;i++){
            for(int j=2;j<=i;j++){
                if(i%j==0&&j!=i){
                    break;
                }else if(j==i){
                    numList.add(i);
                }
            }
        }
        System.out.println("1000以内的素数");
        for(Integer integer : numList){
            System.out.print(integer+" ");
        }
        System.out.println();
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();
        function function = new function();
        System.out.println(function.prime(i));
    }
}
class function{
    public boolean prime(int p){
        for(int i = 2;i<=(p/2);i++){
            if(p%i==0&&p!=i){
                return false;
            }
        }
        return true;
    }
}

数组元素统计(算法初阶、基础知识)

定义一个长度为5的数组arr1,用于存放5个1~9的随机整数(范围包含1和9),再定义一个长度为2的数组arr2,统计arr1中的元素对2求余等于0的个数,保存到arr2[0], 统计arr1中的元素对3求余等于0的个数,保存到arr2[1],在控制台打印输出arr2的所有元素。

解答:

package com.auskat.demo.cc;
import java.util.Random;
public class RandomTest {
    public static void main(String[] args) {
        int arr1[] = new int[5];
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = new Random().nextInt(9) + 1;
        }
        int i2 = 0;
        int j3 = 0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] % 2 == 0) {
                i2++;
            }
            if (arr1[i] % 3 == 0) {
                j3++;
            }
        }
        int arr2[] = new int[2];
        arr2[0] = i2;
        arr2[1] = j3;
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。