36-40題

36、數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字
只會最笨的用字典遍歷計數(shù),然后判斷value是否大于長度的一半??戳讼聞e人的方法,參考思路來自博客:https://www.cnblogs.com/python27/archive/2011/12/15/2289534.html
自己用python實現(xiàn)。

# -*- coding:utf-8 -*-
class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        if not numbers:
            return 0
        else:
            cur = [numbers[0], 1]
            for i in numbers[1:]:
                if i == cur[0]:
                    cur[1] += 1
                else:
                    if cur[1] > 1:
                        cur[1] -= 1
                    elif cur[1] == 1:
                        cur = [i, 1]
            print(cur)
            return cur[0] if numbers.count(cur[0])>len(numbers)/2 else 0

37、整數(shù)中1出現(xiàn)的次數(shù)
多試幾個數(shù)字就能找到規(guī)律了。雖然我也試了很久。寫的比較長,但邏輯應該沒有什么錯誤,可能可以在代碼上進行改進。

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
        temp = str(n)
        nums = [int(x) for x in list(temp)[::-1]]
        count = 0
        for i, num in enumerate(nums[:-1]):
            pos = 10**i
            pre = int(temp[:-(i+1)])
            if num >= 1:
                count += pos
                count += pos*pre
            if num < 1:
                count += pos*pre
        if nums[-1] > 1:
            count += 10**(len(temp)-1)
        else:
            count += int(temp[1:])+1
        return count

38、把數(shù)組排成最小的數(shù)
不會做,看了別人的思路。自己寫了一遍冒泡排序的過程。等看了排序相關內(nèi)容再重新用快排寫一遍

class Solution:
    def PrintMinNumber(self, numbers):
        def swap(i, j):
            numbers[i], numbers[j] = numbers[j], numbers[i]

        def sortbynumadd(numbers):
            flag = True
            i = len(numbers)
            while i > 0 and flag:
                flag = False
                for j in range(i-1):
                    if int(str(numbers[j]) + str(numbers[j+1])) > int(str(numbers[j+1]) + str(numbers[j])):
                        swap(j, j+1)
                        flag = True
                i -= 1
            return numbers

        rst = sortbynumadd(numbers)
        return ''.join([str(x) for x in rst])

39、數(shù)組中重復的數(shù)字
簡單的直接用字典,時間空間復雜度都是O(n)。參考了別人的思路,時間復雜度O(n)空間復雜度O(1)

class Solution:
    def duplicate(self, numbers, duplication):
        long = len(numbers)
        for i in range(len(numbers)):
            index = numbers[i]%long if numbers[i] >= long else numbers[i]
            if numbers[index] > long:
                duplication[0] = index
                return True
            numbers[index] += long
        return False

40、構造乘積數(shù)組
還是不會做。。參考https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46
的第一條評論

class Solution:
    def multiply(self, A):
        B = [1]
        for i in range(len(A)-1):
            B.append(B[i]*A[i])
        temp = 1
        pos = -2
        for j in range(len(A)-1, 0, -1):
            temp *= A[j]
            B[pos] *= temp
            pos -= 1
        return B

感覺今天的五道題大部分都不會做??。還需要繼續(xù)努力

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一些概念 數(shù)據(jù)結構就是研究數(shù)據(jù)的邏輯結構和物理結構以及它們之間相互關系,并對這種結構定義相應的運算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 6,592評論 0 13
  • 第一部分、十道海量數(shù)據(jù)處理面試題 1、海量日志數(shù)據(jù),提取出某日訪問百度次數(shù)最多的那個IP。 此題,在我之前的一篇文...
    零一間閱讀 1,018評論 0 5
  • 該系列文章主要是記錄下自己暑假這段時間的學習筆記,暑期也在實習,抽空學了很多,每個方面的知識我都會另起一篇博客去記...
    Yanci516閱讀 12,644評論 6 19
  • 最近一直都在加班,還得加班到過年,煩的很,有些項目領導明知道無法做完,也要盡量去做,真是郁悶,所以就加班,要表現(xiàn)的...
    OO碰到OO閱讀 255評論 0 0
  • 2018.4.12星期四 陰 每天同一樣的去上學,每天都重復的放學,兒子也說,為什么每天都重復干一樣的事,我告...
    媛栩瑞媽媽閱讀 128評論 0 0

友情鏈接更多精彩內(nèi)容