DATA STRUCTURE1 DAY1

6606 ワード

1. Contains-Duplicate

class Solution(object):
    def containsDuplicate(self, nums):
        nums.sort()
        for i in range(len(nums)):
            if i>0 and nums[i-1]==nums[i]:
                return True
        return False
1.nums.sort()で昇順に並べ替えます.
2.アレイを巡回する場合、アレイが前のアレイと同じ場合はTRUE、巡回が完了した場合はFALSEに戻る

2.Maximum-Subarray


問題は数学の分野を考える必要があるようだ.
問題の焦点は最初から、負数なら0以上の譲受人要素から加えればいいと思っていました.
nowは現在の配列要素を表し、配列内でループします.
sumはnowの値と以前のsumの値とnowの値を比較することによってより大きな値を得る
resultはsumと比較してsumがresultより大きい場合はresultの値をsum(変数名をmaxとすることが望ましい)に設定します.

例外処理


例外を考えるのは難しすぎるようだ.
いくつかのテスト例だけを見てアルゴリズムを書くことに慣れているので、大きな思考例を変えるべきです.
例外配列内の要素が1つしかない場合は、=>array[0]を返します.
例外配列が負の場合は、=>配列内の要素の最大値を返します.
class Solution(object):
    def maxSubArray(self, nums):
        #배열의 길이가 1개
        if len(nums)==1:
            return nums[0]
        #배열이 모두 음수일 때
        for i in range(len(nums)) :
            if nums[i] >=0:
                break
            else:
                if i==len(nums)-1:
                    return max(nums)
        sum=0
        result=0
        #배열에 0 이상인 원소가 있을 때
        for i in range(len(nums)):
            now=nums[i]
            sum=max(now,sum+nums[i])
            if (sum<0):
                sum=0
            result=max(sum,result)
        return result