精华内容
下载资源
问答
  • 查看所有50道基础算法题请看: Java的50道基础算法题 ... * 输入数组,最大一个元素交换,最小与最后一个元素交换,输出数组。 */ /* 分析:交换数据很简单,但首先要先找到最大跟最小数字index。 */ ...

    查看所有50道基础算法题请看:

    Java的50道基础算法题

    package Demo35Max_Min_Exchange;
    import java.util.Arrays;
    import java.util.Scanner;
    /**
     * 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
     */
    /*
    分析:交换数据很简单,但首先要先找到最大跟最小数字的index。
     */
    public class Max_Min_Exchange {
        public static void main(String[] args) {
            //获取用户的输入,并解析为一个数组
            Scanner sc = new Scanner(System.in);
            System.out.println("请直接输入数组元素,(以逗号作为间隔)");
            String str = sc.next();
            //分割用户输入得到一个字符串数组
            String[] strs = str.split(",|,");
            // 遍历这个字符串数组,将每个字符串解析为一个Integer,并装到Integer数组中
            Integer[] nums = new Integer[strs.length];
            try {
                for (int i = 0; i < strs.length; i++) {
                    nums[i] = Integer.parseInt(strs[i]);
                }
            }catch (NumberFormatException e){
                System.out.println("你输入有误,请输入数字,其它字符不支持");
            }
            int max_index = 0;
            int min_index = 0;
            int max =nums[0];
            int min =nums[0];
            int bottle=0;
            // 遍历数组,获取最大数和最小数对应的index值
            for (int i = 0; i < nums.length; i++) {
                if(max<nums[i]){
                    max_index=i;
                    max = nums[i];
                }
                if(min>nums[i]){
                    min_index=i;
                    min=nums[i];
                }
            }
            // 捣鼓瓶子,倒来倒去
            bottle=nums[0];
            nums[0]=nums[max_index];
            nums[max_index]=bottle;
            bottle=nums[nums.length-1];
            nums[nums.length-1]=nums[min_index];
            nums[min_index]=bottle;
            // 打印结果
            System.out.println("===========================");
            System.out.println("处理方案:最大的与第一个元素交换,最小的与最后一个元素交换");
            System.out.println("您输入的数组经过处理之后的结果为:");
            System.out.println(Arrays.toString(nums));
        }
    }
    
    展开全文
  • 题目描述 把一个数组最开始若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个...1.最简单的方法,遍历一遍即可。数字为非递减排序,旋转后,遍历过程中找到第一个比array[0]小...

    题目描述

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
    NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

    解题思路

    1.最简单的方法,遍历一遍即可。数字为非递减排序,旋转后,遍历过程中找到第一个比array[0]小的数array[i]时说明array[i+1..n]>array[i],所以array[i]为最小值。复杂度O(n)

    ​
    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            int minNum = array[0];
            if(array.length==0) //数组为0的特殊情况
                return 0;
            for(int i = 1;i<array.length;i++)
            {
                if(minNum>array[i])
                {minNum = array[i];break;}
                    
            }
            return minNum;
        }
    }
    
    ​

    2.二分法 复杂度o(logn)

    import java.util.ArrayList;
    public class Solution {
        public static int minNumberInRotateArray(int [] array) {
    	        int low = 0;
    	        int high = array.length-1;
    	        int mid = 0;
    	        while(low<high)
    	        {
    	            mid = (low + high)/2;
    	            if(array[mid]>array[high])
    	                low = mid+1; //mid大于high时,说明数组翻转在mid之后
    	            else if(array[mid]<array[high])
    	                high = mid; //mid小于high,说明mid已经超过最小值
    	            else
                        high = high - 1; //有重复的数字不好判断,需要一个一个测试
    	        }
    	        return array[low];
    	    }
    }

     

    展开全文
  • 所以最简单的我们直接循环遍历所有元素,找到哪个元素比前一个元素小,那么它就是最小元素了。当然,如果是旋转数组全部都是有序递增,或者数组的值都是一样情况下,那么旋转数组的第一个元素就是最小元素了,...

    题目描述:
    在这里插入图片描述
    解法思路:
        观察题目给出来的旋转数组,我们发现,最小元素的前面都是有序递增数组来的,而且它们的值都比最小元素大。所以最简单的我们直接循环遍历所有的元素,找到哪个元素比前一个元素小,那么它就是最小元素了。当然,如果是旋转数组全部都是有序递增的,或者数组的值都是一样的情况下,那么旋转数组的第一个元素就是最小元素了,直接输出即可。

    代码实现:

    class Solution {
        public int minArray(int[] numbers) {
            int i=1;
            while(i<numbers.length){
                if(numbers[i-1]>numbers[i]) return numbers[i];
                i++;
            }
            return numbers[0];
        }
    }
    

    执行结果:
    在这里插入图片描述

    展开全文
  • 最简单的思路是排序,按从小到排序后,一个就是最小数字,然后从一个往后遍历,等于最小数字输出即可。但是这种方案需要两层循环,时间复杂度是O(n^2),应该寻求更快方案。 思路2: 想一下人如果去干这...

    1. 问题

    如果有若干个数字,输入其中所有最小的数字。

    例如,输入1 2 3 1 2 1 4 5,则输出1 1 1

    2. 思路

    2.1 思路1

    最简单的思路是排序,按从小到大排序后,第一个就是最小的数字,然后从第一个往后遍历,等于最小数字的输出即可。但是这种方案需要两层循环,时间复杂度是O(n^2),应该寻求更快的方案。

    2.2 思路2

    想一下人如果去干这件事怎么实现,首先是找到最小的值,然后找与最小值相同的数字即可,这种需要从头到尾扫描数字两遍。

    2.3 思路3

    还有更快的方案,我只扫描所有数字一遍,把第一个数字当做最小,后面只把小于等于当前数字的记下来。这样我记下来的最后一个数字必然是最小的,然后从后往前看跟最小的数字相同的输出即可。

    3. 实现

    可以用数组实现,也可以用栈实现。因为输出是从后往前输出,正好符合栈后进先出的特点。代码如下:

    
    /**
     * 获取最小的若干数字
     * @author maoge
     * @date 2019-02-27
     */
    public class GetMinNum {
    	/**
    	 * 入口
    	 */
    	public static void main(String[] args) {
    		int[] input = { 1, 2, 3, 1, 2, 1, 4, 5 };
    		System.out.println("====数组计算结果====");
    		getMinNumByArray(input);
    		System.out.println("");
    		System.out.println("====栈计算结果====");
    		getMinNumByStack(input);
    		System.out.println("");
    	}
    
    	/**
    	 * 通过数组计算最小的几个数字
    	 */
    	public static void getMinNumByArray(int[] input) {
    		//定义用来输出的数组
    		int[] output = new int[input.length];
    		//输出数组当前操作位置
    		int location=0;
    		output[location]=input[0];
    		for (int i = 1; i < input.length; i++) {
    			if (input[i] <= output[location]) {
    				location++;
    				output[location]=input[i];
    			}
    			i++;
    		}
    		//打印结果
    		for(int j=location;j>=0;j--) {
    			//output[location]是最小值
    			if(output[location]==output[j]) {
    				System.out.print(output[j]);
    			}
    		}
    	}
    	
    	/**
    	 * 通过栈计算最小的几个数字
    	 */
    	public static void getMinNumByStack(int[] input) {
    		Stack<Integer> stack=new Stack<Integer>();
    		int min=input[0];
    		stack.push(min);
    		//不大于最小的入栈
    		for (int i = 1; i < input.length; i++) {
    			if(input[i]<=min) {
    				stack.push(input[i]);
    			}
    		}
    		//栈顶元素就是最小的元素
    		int peek=stack.peek();
    		while(stack.isEmpty()==false) {
    			int num=stack.pop();
    			if(num==peek) {
    				System.out.print(num);
    			}
    		}
    	}
    }
    

    如有问题请扫码联系我
    在这里插入图片描述

    展开全文
  • 给定一个整数组,找到一个具有最小和连续子数组。返回其最小和。 样例1 输入:[1, -1, -2, 1] 输出:-3 样例2 输入:[1, -1, -2, 1, -4] 输出:-6 java题解 定义两位数组 一个比较大小确定当前位置元素...
  • 题目要求我们找到数组排序后的第 k 个最大元素,而不是 k 个不同元素” , 语义是从右边往左边数第 k 个元素(从 11 开始),那么从左向右几个呢,我们列出几个找找规律就好了。 一共 6 个元素,找...
  • 冒泡排序即 将值大的数像泡泡一样,先吐出来,依次将一个数拿出来与后面的数进行比较,在这里简单写一下:      如3,2,1,4,5 在一次循环中,先将 3 与其后数进行比较,若比其后数大,...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
  • 排序,Java实现

    2020-06-04 22:44:08
    二趟:在剩下的 n - 1 个数中找到最小的数, 与第数组1号索引上的元素交换, 以此类推,n个元素需要选择 n - 1趟,序列全部有序 代码实现: 上述简单选择排序,每次遍历只维护一个最小值,与待排序序列的一个...
  • =10000,全部由字母组成)中找到第一个只出现一次字符,并返回它位置, 如果没有则返回 -1(需要区分小写). 解析思路 整体思路较为简单。 新建一个长度为58的数组,因为在ASCII码里面A-Z为65-90,a-z为97-...
  • LeetCode 热题 HOT 100 Java题解53. 最大子序和动态规划复杂度分析分治法复杂度分析 53. 最大子序和 ...这道题动态规划非常的简单,用dp[i]dp[i]dp[i]表示iii位结尾的最大子数组的大小,那么当dp[i−1]dp[i
  • 堆排序原理理解: 正如简单选择排序,堆排序中,我们仍然在一轮优先找到最大并剔除该二轮从剩余数组找到最大并剔除该…以此类推。
  • 简单选择排序 排序原理: ...简单来说,就是对于未排序的数组,选择其中最小的数,放在前面。 java代码 import java.util.Arrays; public class SelectSort { public static void sort(int[]
  • 今天开始学习LeetCode暑期打卡八周题目,主题是动态规划,也是所有章节中难...给定一个整数组 nums ,找到一个具有最大和连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,...
  • ID:通常需要从整数组中找到某事物最大值或最小值 * 示例:股票市场问题等 窗户之间距离 排序 归并排序 合并操作在某些情况下可以证明是有用 知道 k-way 合并,能够在不通过完整 arra 情况下做到这一点 ...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
  • 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。...
  • 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。...
  • 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端程序,两者互相配合可以开发出超多网络程序,这是基础部分。...
  • 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的...
  • 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的...
  • Thinking.In.Java

    2012-03-21 22:35:53
    本章宗旨便是探讨在使用对象同时用来容纳它们一些Java工具:从简单的数组到复杂集合(数据结构),如Vector和Hashtable等。最后,我们还会深入讨论新型和改进过的Java 1.2集合库。 (9) 9章:违例差错控制...
  • Java-PHP-C#

    2012-11-27 15:13:36
    元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。 元字符: 大括号:大括号用来精确指定匹配元字符出现的次数,例如"/pre{1,5}/"表示匹配的对象可以是"pre"、"pree"、...

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

最简单java找到数组第大的数

java 订阅