转自:http://forum.ubuntu.org.cn/viewtopic.php?t=260613
1.平衡点问题
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要 求:返回任何一个平衡点
2.支配点问题:
支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支 配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点
以下给 出我想的答案
#1.平衡点问题
代码
1 # -*- coding: utf-8 -*-
2
3 data = [1, 3, 5, 7, 8, 25, 4, 20]
4
5 def main() :
6
7 dataIndex = []
8 length = len(data)
9 total = sum(data)
10
11 if (length > 2) :
12 tempSum = data[0]
13 for i in range(1, length - 1) :
14 if (tempSum * 2 + data[i] == total) :
15 dataIndex.append(i)
16 tempSum = tempSum + data[i]
17
18 return dataIndex
19
20 if __name__ == "__main__" :
21 print(main())
2
3 data = [1, 3, 5, 7, 8, 25, 4, 20]
4
5 def main() :
6
7 dataIndex = []
8 length = len(data)
9 total = sum(data)
10
11 if (length > 2) :
12 tempSum = data[0]
13 for i in range(1, length - 1) :
14 if (tempSum * 2 + data[i] == total) :
15 dataIndex.append(i)
16 tempSum = tempSum + data[i]
17
18 return dataIndex
19
20 if __name__ == "__main__" :
21 print(main())
#2.支配点问题
代码
1 # -*- coding: utf-8 -*-
2 # 用dictionary实现,key存放所给的数,value为list,存放所给数在数组中的位置
3 # 一个数可能在数组中出现多次
4
5 data = [3, 3, 1, 2, 3]
6
7 def main() :
8 dataIndex = []
9 hashData = {}
10
11 for i in range(0, len(data)) :
12 key = data[i]
13 if (key in hashData) :
14 value = hashData[key]
15 value.append(i)
16 else :
17 value = []
18 value.append(i)
19 hashData[key] = value
20
21 halfLength = int(len(data) / 2)
22 if (len(data) % 2 == 1) :
23 halfLength = halfLength + 1
24
25 for key in hashData :
26 if (len(hashData[key]) >= halfLength) :
27 dataIndex.append(hashData[key])
28
29 return dataIndex
30
31 if __name__ == "__main__" :
32 print(main())
2 # 用dictionary实现,key存放所给的数,value为list,存放所给数在数组中的位置
3 # 一个数可能在数组中出现多次
4
5 data = [3, 3, 1, 2, 3]
6
7 def main() :
8 dataIndex = []
9 hashData = {}
10
11 for i in range(0, len(data)) :
12 key = data[i]
13 if (key in hashData) :
14 value = hashData[key]
15 value.append(i)
16 else :
17 value = []
18 value.append(i)
19 hashData[key] = value
20
21 halfLength = int(len(data) / 2)
22 if (len(data) % 2 == 1) :
23 halfLength = halfLength + 1
24
25 for key in hashData :
26 if (len(hashData[key]) >= halfLength) :
27 dataIndex.append(hashData[key])
28
29 return dataIndex
30
31 if __name__ == "__main__" :
32 print(main())
要求算一任意长度字符串中不同的字符以及它的个数
s = "abcdefgabc"
dic = dict.fromkeys(s, 0)
for x in s:
dic[x] += 1
print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())
dic = dict.fromkeys(s, 0)
for x in s:
dic[x] += 1
print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())