給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。python
函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。數組
說明:app
示例:函數
輸入: numbers = [2, 7, 11, 15], target = 9 輸出: [1,2] 解釋: 2 與 7 之和等於目標數 9 。所以 index1 = 1, index2 = 2 。
第一點:數有2個, 第二點:兩個數的和爲target 第三點:兩個數可能會相同,相同兩個數應爲他是有序的索引必定會是連續的
class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: numbers_set = set(numbers) #去重減小執行時間 new_list = [] for a in numbers_set: if target -a in numbers_set: b = target -a #判斷這個值是否減去後在列表中 if a != b: #若是兩個值不相同那確定兩個索引不同 new_list.append(numbers.index(a)+1) else: if numbers.count(a) != 1: #若是值同樣那要計數看看原來列表裏面是否與兩個 new_list.append(numbers.index(a)+1) new_list.append(numbers.index(a)+2) break new_list.sort() #應爲集合是無序的要排序 return new_list #直接列表搜太費時間了,題目超時 # new_list = [] # for a in range(len(numbers)): # if target - numbers[a] in numbers: # if target - numbers[a] !=numbers[a]: # new_list.append(a+1) # else: # if numbers.count(numbers[a]) != 1: # new_list.append(a+1) # print(new_list) # return new_list
給定一個排序數組,你須要在原地刪除重複出現的元素,使得每一個元素只出現一次,返回移除後數組的新長度。code
不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。排序
示例 1:索引
給定數組 nums = [1,1,2], 函數應該返回新的長度 2, 而且原數組 nums 的前兩個元素被修改成 1, 2。 你不須要考慮數組中超出新長度後面的元素。
示例 2:leetcode
給定 nums = [0,0,1,1,1,2,2,3,3,4], 函數應該返回新的長度 5, 而且原數組 nums 的前五個元素被修改成 0, 1, 2, 3, 4。 你不須要考慮數組中超出新長度後面的元素。
說明:rem
爲何返回數值是整數,但輸出的答案是數組呢?字符串
請注意,輸入數組是以「引用」方式傳遞的,這意味着在函數裏修改輸入數組對於調用者是可見的。
你能夠想象內部操做以下:
// nums 是以「引用」方式傳遞的。也就是說,不對實參作任何拷貝 int len = removeDuplicates(nums); // 在函數裏修改輸入數組對於調用者是可見的。 // 根據你的函數返回的長度, 它會打印出數組中該長度範圍內的全部元素。 for (int i = 0; i < len; i++) { print(nums[i]); }
#逆向思惟,倒着來若是發現重複的將其刪除
class Solution: def removeDuplicates(self, nums: List[int]) -> int: for i in range(len(nums)-1, 0, -1): if nums[i] == nums[i-1]: nums.pop(i) return len(nums)
給定一個字符串,驗證它是不是迴文串,只考慮字母和數字字符,能夠忽略字母的大小寫。
說明:本題中,咱們將空字符串定義爲有效的迴文串。
示例 1:
輸入: "A man, a plan, a canal: Panama" 輸出: true
示例 2:
輸入: "race a car" 輸出: false
將字符串中的字母按順序拿出來,而且將大寫的字母轉化爲小寫字母添加到一個新的字符串中,而後判斷迴文字符便可
class Solution: def isPalindrome(self, s: str) -> bool: s_filter = ''.join(filter(str.isalnum, s)).lower() return s_filter[::-1] == s_filter
有更加好的思路,或者解題方法評論區留言謝謝