【滴滴笔试】1.连续数组的最大和 2.找出数组中第K大的数

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 public class Main {
 4     public static void main(String args[]){
 5         Scanner scanner = new Scanner(System.in);
 6         while (scanner.hasNext()){
 7             String str = scanner.nextLine();
 8             String[] arrStr = str.split(" ");
 9             int[] arrNum = new int[arrStr.length];
10             int[] arrOut = new int[arrStr.length];
11             for (int i = 0; i < arrStr.length; i++){
12                 arrNum[i] = Integer.parseInt(arrStr[i]);
13                 arrOut[i] = 0;
14             }
15             int outPut = arrNum[0];
16             for (int i = 0; i < arrNum.length; i++){
17                 for (int j = 0; j < arrNum.length; j++){
18                     if(i >= j){
19                         arrOut[j] += arrNum[i];
20                         if(arrOut[j] > outPut){
21                             outPut =  arrOut[j];
22                         }
23                     }
24                 }
25             }
26             System.out.println(outPut);
27         }
28     }
29 }

2.

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 public class Main {
 4     public static void main(String args[]){
 5         Scanner scanner = new Scanner(System.in);
 6         while (scanner.hasNext()){
 7             String str = scanner.nextLine();
 8             int n = scanner.nextInt();
 9             String[] arrStr = str.split(" ");
10             int[] arrNum = new int[arrStr.length];
11             for (int i = 0; i < arrStr.length; i++){
12                 arrNum[i] = Integer.parseInt(arrStr[i]);
13             }
14             Arrays.sort(arrNum);
15             System.out.println(arrNum[n]);
16         }
17     }
18 }

题目不难,重点是输入。

时间: 2024-12-22 03:06:26

【滴滴笔试】1.连续数组的最大和 2.找出数组中第K大的数的相关文章

挑战面试编程:查找数组中第k大的数

查找数组中第k大的数 问题: 查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思路: 1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. 只需找到第k大的数,不必把所有的数排好序.我们借助快速排序中partition过程,一般情况下,在把所有数都排好序前,就可以找到第k大的数.我们依据的逻辑是,经过一次partition后,数组被pivot分成左右两部分:S左.S右.当S左的元素个数|S左|等于k-1时,pivo

【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】

[215-Kth Largest Element in an Array(数组中第K大的数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 代码下载[https://github.com/Wang-Jun-Chao] 原题 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth d

[经典算法题]寻找数组中第K大的数的方法总结

[经典算法题]寻找数组中第K大的数的方法总结 责任编辑:admin 日期:2012-11-26 字体:[大 中 小] 打印复制链接我要评论 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值. 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家. 所谓"第(前)k大数问题"指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题.

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

题目描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.   你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定 nums = [2, 7, 11, 15], target = 9返回 [0, 1] 思路: 第一层for循环从索引0到倒数第二个索引拿到每个数组元素,第二个for循环遍历上一层for循环拿到的元素的后面的所有元素. 具体代码: 1 public class Solution { 2 public int[] twoSum(int[] nums,

找一个数组中第K大的数

快排思想,选取序列的一个key进行划分,小于key的分在左边,大于key的在右边,key的位置-low+1就是最后一个元素是key的序列中元素的数量,当元素数量大于K时,就在左半部分递归找,等于时 arr[key]就是第K 大的元素,小于K时,在右边递归找第k-num大的元素 /** * 文件名:FindK.java * 时间:2014年11月7日上午11:23:43 * 作者:修维康 */ package chapter7; /** * 类名:FindK 说明:找到一个数组中第K大的元素 */

求数组中第k大的数(分治法)

思想:快排 因为单趟排序是使选定的king值到其应该到的位置,所以每次判断这个king的正确位置是否是第K大数的位置即可 #include <iostream> using namespace std; //快排中的单趟排序 int PartSort(int* arr,int start,int end) { int first = start; int last = end; int tmp = arr[first]; int key = first; while (first < l

查找无序数组中第K大的数

思路: 利用快速排序的划分思想 可以找出前k大数,然后不断划分 直到找到第K大元素 代码: #include <iostream> #include <algorithm> #include <cstdio>5 using namespace std; int findK(int left, int right, int arr[], int k) { if(left >= right) return arr[left]; int first = left, la

为以后出题做准备 NO.3 连续的子串中有多少个满足第k大的数 大于等于m

世界给了我寻找光明的眼眸    却让我在黑暗中独自摸索   我自诩不是什么坏人   但始终成为不了一个好人. 许筱宥百般无聊,便翻起了一起的数学书  看起了数列 一个长度为n的数列,他又写下了一个数m,他想知道这个数列中有多少个区间里的第k大的数不小于m,当然首先这个区间必须连续 至少要有k个数 输入 第一个数表示有T组事例 然后有n,m,k 最后有长度为n的数组   (0<n<10000)(k>0) (0<m<n) 输出 对于每组数据输出一行一个数表示答案. #includ

经典算法学习——快速找出数组中两个数字,相加等于某特定值

这个算法题的描述如下:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值.目前我假设数组中的都是各不相等的整数.这道题是我在一次面试中被问到的,由于各种原因,我没回答上来,十分尴尬.其实这道题十分简单,我们使用相对巧妙的方法来实现下.注意不使用两层循环的元素遍历.示例代码上传至:https://github.com/chenyufeng1991/SumTo100 . 算法描述如下: (0)首先对原数组进行排序,成为递增数组: (1)对排序后的数组头部i [0]和数组尾部j [n-1]