python_day_9:20180724

496. 下一个更大元素 I
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。
思路:
本题简单
 1 class Solution:
 2     def nextGreaterElement(self, nums1, nums2):
 3         """
 4         :type nums1: List[int]
 5         :type nums2: List[int]
 6         :rtype: List[int]
 7         """
 8         result=[]
 9         for i in nums1:
10             result.append(self.nfind(i,nums2))
11         return result
12     def nfind(self,item,nums):
13         i=nums.index(item)
14         for k in nums[i:]:
15             if k >item:
16                 return k
17         return -1
412. Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
思路:
本题简单
 1 class Solution:
 2     def fizzBuzz(self, n):
 3         """
 4         :type n: int
 5         :rtype: List[str]
 6         """
 7         result=[]
 8         for i in range(1,n+1):
 9             result.append(self.choose(i))
10         return result
11     def choose(self,i):
12         result=''
13         if i%3==0:
14             result+='Fizz'
15         if i%5==0:
16             result+='Buzz'
17         if i%3!=0 and i%5!=0:
18             result+=str(i)
19         return result
169. 求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
思路:
因为众数一定存在,所以就用单边判断来找,不用考虑不成立的情况。
 1 class Solution:
 2     def majorityElement(self, nums):
 3         """
 4         :type nums: List[int]
 5         :rtype: int
 6         """
 7         result=dict()
 8         for i in nums:
 9             if i not in result.keys():
10                 result[i]=nums.count(i)
11                 if result[i]>len(nums)/2:
12                     return i
504. 七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出。
思路:
这代码怎么看都觉得太丑了。思路是,先用最大的7的幂数去敲击目标数,敲下来一块后,剩下的继续用7的幂数敲击,最后掰下来一块块的数字,感觉很蠢
 1 class Solution:
 2     def convertToBase7(self, num):
 3         """
 4         :type num: int
 5         :rtype: str
 6         """
 7         result=[0 for i in range(len(str(num))*2)]
 8         number=abs(num)
 9         if num==0:
10             return '0'
11         while number>=0:
12             if number>=7:
13                 for i in range(number):
14                     if 7**i>number:
15                         result[-i]=number//(7**(i-1))
16                         number-=(number//(7**(i-1)))*7**(i-1)
17                         break
18 
19             else:
20                 result[-1]=number
21                 number=-1
22         for k in range(len(result)):
23             if result[k] >0:
24                 result=result[k:]
25                 break
26         if num>=0:
27             outcome=''
28         else:
29             outcome='-'
30         for i in result:
31             outcome+=str(i)
32         return outcome

 

posted @ 2018-07-24 16:55  code_in_py  阅读(301)  评论(0编辑  收藏  举报