Skip to content

Commit adce1c1

Browse files
committed
数组中数字组成的最小整数
1 parent 47ae673 commit adce1c1

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed

int_divide2.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#! /usr/bin/env python
2+
#encoding:utf-8
3+
4+
"""
5+
给你一个小于50的数字 a ,请写出一个算法得到所有可能的数字集合,每个数字集合满足以下条件:
6+
7+
1. 集合中所有数字的和等于a;
8+
9+
2. 集合中的所有数字均大于1;
10+
11+
3. 集合中可以出现重复数字;
12+
13+
例如:
14+
15+
2 -> {2},
16+
3->{3},
17+
4->{[4], [2, 2]},
18+
5->{[5], [3, 2]},
19+
6->{[6], [4, 2], [3, 3], [2, 2, 2]}
20+
7->{[7], [5, 2], [4, 3], [3, 2, 2]}
21+
8->{[8], [6, 2], [5, 3], [4, 4], [4, 2, 2], [3, 3, 2], [2, 2, 2, 2]}
22+
"""
23+
24+
def divide(m,r,out):
25+
temp = []
26+
out
27+
if(r==0):
28+
return True
29+
m1=r
30+
while m1>1:
31+
if(m1<=m):
32+
out.append(m1)
33+
if(divide(m1,r-m1,out)):
34+
print temp
35+
36+
out.pop()
37+
m1-=1
38+
return False
39+
40+
41+
n=6
42+
out=[]
43+
divide(n-1,n,out)
44+
45+

joint_int.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#问题
2+
3+
把一个int型数组中的数字拼成一个串,这个串代表的数字最小。
4+
5+
#思路说明
6+
7+
对这个问题的理解:
8+
9+
1. 有一个元素是int类型的list;
10+
11+
2. 将上述list中的每个元素的数字分别取出来,然后将这些数字的顺序进行从新排列,并将其中的最小整数输入,就是题目中要求的最小数字。
12+
13+
如果按照上述理解,在解题中,最应当小心的是数字如果很大,比如list中的某个int元素是:222222222222227777777777776666666666699999999999888888888...很大的整数,就不得不转化为字符串操作了。
14+
15+
所以,在本问题中,基本思路是:
16+
17+
1. 将list中的int元素转换为str;
18+
2. 将所有数字(str类型)装入到一个list2
19+
3. 对list2进行排序
20+
4. 将list2中的数字(str类型)组装成一个数值(str类型)
21+
22+
#解决(Python)
23+
24+
#! /user/bin/env python
25+
#coding:utf-8
26+
27+
28+
def joint_int(lst):
29+
str_list = [str(i) for i in lst]
30+
str_lonely = [str_list[i][j] for i in range(len(str_list)) for j in range(len(str_list[i]))]
31+
32+
sorted_str = sorted(str_lonely)
33+
return "".join(sorted_str)
34+
35+
print joint_int([1230975,4087644567856])
36+
37+
##qiwsir#gmail.com

joint_int.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#! /user/bin/env python
2+
#coding:utf-8
3+
4+
"""
5+
把一个int型数组中的数字拼成一个串,这个串代表的数字最小;
6+
7+
对这个问题的理解:
8+
9+
1、有一个元素是int类型的list;
10+
11+
2、将上述list中的每个元素的数字分别取出来,然后将这些数字的顺序进行从新排列,并将其中的最小整数输入,就是题目中要求的最小数字。
12+
13+
如果按照上述理解,在解题中,最应当小心的是数字如果很大,比如list中的某个int元素是:222222222222227777777777776666666666699999999999888888888...很大的整数,就不得不转化为字符串操作了。
14+
15+
所以,在本问题中,基本思路是:
16+
17+
1、将list中的int元素转换为str;
18+
2、将所有数字(str类型)装入到一个list2
19+
3、对list2进行排序
20+
4、将list2中的数字(str类型)组装成一个数值(str类型)
21+
"""
22+
23+
def joint_int(lst):
24+
str_list = [str(i) for i in lst]
25+
str_lonely = [str_list[i][j] for i in range(len(str_list)) for j in range(len(str_list[i]))]
26+
27+
sorted_str = sorted(str_lonely)
28+
return "".join(sorted_str)
29+
30+
print joint_int([1230975,4087644567856])
31+
32+

0 commit comments

Comments
 (0)