- 浏览: 183399 次
- 性别:
- 来自: 济南
文章分类
最新评论
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
给定一个数组,里面存放的都是非负整数,要求我们用里面的元素组成一个最大的数。这里我们首先将数组转换成一个一个字符串数组,这样我们就可以自定义Arrays.sort方法了,我们用到了Comparator接口,通过重写compare方法,来得到一个最大的数。关键就是compare的实现,我们知道compare有两个参数p1, p2, 如果p1 < p2时返回-1, p1 = p2返回0,p1 > p2返回1。在这道题目中,我们将两个参数先相加s1 = p1 + p2, s2 = p2 + p1,这样得到两个新的参数。为了更清楚的解释,我们假设此时p1 = "34", p2 = "56", 所以s1 = "3456" , s2 = "5634"。按照题目的要求我们要得到一个最大的数,这时我们希望p2和p1交换位置,因为s2 > s1, 所以我们应该返回1,因此我们在compare中返回s2.compareTo(s1)即可。代码如下:
For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.
Note: The result may be very large, so you need to return a string instead of an integer.
给定一个数组,里面存放的都是非负整数,要求我们用里面的元素组成一个最大的数。这里我们首先将数组转换成一个一个字符串数组,这样我们就可以自定义Arrays.sort方法了,我们用到了Comparator接口,通过重写compare方法,来得到一个最大的数。关键就是compare的实现,我们知道compare有两个参数p1, p2, 如果p1 < p2时返回-1, p1 = p2返回0,p1 > p2返回1。在这道题目中,我们将两个参数先相加s1 = p1 + p2, s2 = p2 + p1,这样得到两个新的参数。为了更清楚的解释,我们假设此时p1 = "34", p2 = "56", 所以s1 = "3456" , s2 = "5634"。按照题目的要求我们要得到一个最大的数,这时我们希望p2和p1交换位置,因为s2 > s1, 所以我们应该返回1,因此我们在compare中返回s2.compareTo(s1)即可。代码如下:
public class Solution { public String largestNumber(int[] nums) { StringBuilder sb = new StringBuilder(); if(nums == null || nums.length == 0) return null; String[] str = new String[nums.length]; for(int i = 0; i < nums.length; i++) str[i] = String.valueOf(nums[i]); Arrays.sort(str, new Comparator<String>() { public int compare(String i, String j) { String s1 = i + j; String s2 = j + i; return s2.compareTo(s1); } }); for(String s : str) sb.append(s); if(str[0].equals("0")) return "0"; return sb.toString(); } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 374Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 497Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 429Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 580Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 929Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 672Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 842Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 782You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 704For a undirected graph with tre ...
相关推荐
java java_leetcode题解之Largest Number.java
c++ C++_leetcode题解之747. Largest Number At Least Twice of Others.cpp
代码
1. (全世界)人数最多 - the largest number of people worldwide 2. 多于,超过 - more than 3. 在所有这些语言中 - among all these languages 4. 最为广泛地被使用 - used most widely 5. 最新的研究 - the ...
此外,还定义了一个测试函数`test_largestNumber`来验证`largestNumber`函数的正确性。 #### 5. Verilog实现简单加法器 题目要求使用Verilog实现一个简单的加法器。下面是一个基本的8位加法器实现示例: ```...
习题答案,过程详细,仅供参考。 摘录文档片段如下: 1-6. #include int main() {int a,b,c,max; printf("please input a,b,c:\n");... printf("The largest number is %d\n",max); return 0; }
在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度。 问题描述 假设你有一个数组,而且这个数组中...var largestNumber = 0; // 创建第二个变量,存储最大的数 //
printf("The third largest number is the same as the first and second largest: %d\n", arr[n - 3]); } else if (arr[n - 3] == arr[n - 2]) { printf("The third largest number is: %d\n", arr[n - 3]); } ...
cout << "The second largest number in the array is: " << second_largest ; return 0; } ``` 这段代码会输出数组中的第二大数。这种方法不仅适用于排序数组,也适用于未排序的数组,因此具有很好的通用性。 ...
MES2 DB 0AH,0DH, The largest number is:$ NUMB DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H DDATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET NUMB MOV CX,...
例如:In fact, China may have the largest number of English learners.(实际上,中国可能是英语学习者最多的国家。) 【探究案解析】 在探究案部分,重点练习了如何使用“because of”和“because”引导原因...
java入门 java_leetcode题解之179_Largest_Number
print(largestNumber(nums)) # 输出:9534330 ``` 通过这个题目,我们可以深入理解Python的字符串操作、排序功能以及如何自定义排序规则。同时,这也是一个很好的练习,可以帮助开发者提升解决实际问题的能力,尤其...
python python_leetcode题解之179_Largest_Number.py
std::cout << "The largest number is: " ; } else if (b > a && b > c) { std::cout << "The largest number is: " ; } else { std::cout << "The largest number is: " ; } return 0; } ``` 2. **百分制...
Description Now, there are a list of N numbers. Your job is to find the Mth largest number X. (there are M-1 numbers >= X)
形容词最高级前需加定冠词"the",同时"people"前使用"the largest number of"表示最多的数量,故答案是D. the largest number of。 5. 题目5测试句子结构。"We call this dog Eddie"是主语+谓语+间接宾语+直接宾语...
("The largest number is {}", result); } ``` 在这个示例中,`largest`函数是一个泛型函数,它可以接收任何实现了`PartialOrd`和`Copy`特质的类型的切片,并返回其中最大的元素。 #### 四、泛型与特质(Traits) ...
System.out.println(largest + " is the largest number."); } ``` 在这个例子中,`5`、`10` 和 `3` 分别赋值给 `a`、`b` 和 `c`,然后调用 `biggestOfThree` 函数,将结果存储在 `largest` 变量中,并输出结果。 ...