Leetcode 算法题07
来源:互联网 发布:平安银行java外包 编辑:程序博客网 时间:2024/04/30 03:39
169. Majority Element
输入一个列表,找出其中出现次数超过列表长度一半的数
我的代码:
class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ count = collections.Counter(nums) for i in count: if count[i] > len(nums)/2: return i
大神的代码:既然占了代码一半,排序后中间的那个数肯定就是所求
class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ return sorted(nums)[len(nums)/2]
167. Two Sum II - Input array is sorted
给一个排好序的列表和目标数,找出列表中相加得到目标数的两个数的索引
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
我的代码:第一次超时了,没有记录,这次是想了个不超时的思路,写得多了点
class Solution(object): def twoSum(self, numbers, target): """ :type numbers: List[int] :type target: int :rtype: List[int] """ number = collections.Counter(numbers) print(number) keys = list(number.keys()) keys.sort() print(keys) for i in range(len(keys)): if keys[i] > target: return False add = 0 while i+add <len(keys) and keys[i+add] + keys[i] < target: add += 1 if i+add < len(keys) and keys[i+add] + keys[i] == target: if add != 0: ans1 = sum(list(map(lambda x:number[x],keys[:i])))+1 ans2 = sum(list(map(lambda x:number[x],keys[:i+add])))+1 return [ans1,ans2] elif add == 0 and number[keys[i]]>1: ans1 = sum(list(map(lambda x:number[x],keys[:i])))+1 ans2 = ans1+1 return [ans1,ans2]大神的代码:自愧不如
# two-pointerdef twoSum1(self, numbers, target): l, r = 0, len(numbers)-1 while l < r: s = numbers[l] + numbers[r] if s == target: return [l+1, r+1] elif s < target: l += 1 else: r -= 1 # dictionary def twoSum2(self, numbers, target): dic = {} for i, num in enumerate(numbers): if target-num in dic: return [dic[target-num]+1, i+1] dic[num] = i # binary search def twoSum(self, numbers, target): for i in xrange(len(numbers)): l, r = i+1, len(numbers)-1 tmp = target - numbers[i] while l <= r: mid = l + (r-l)//2 if numbers[mid] == tmp: return [i+1, mid+1] elif numbers[mid] < tmp: l = mid+1 else: r = mid-1
387. First Unique Character in a String
输入一个字符串,找到第一个在字符串中没有重复出现过的字母的索引
Examples:
s = "leetcode"return 0.s = "loveleetcode",return 2.我的代码:
class Solution(object): def firstUniqChar(self, s): """ :type s: str :rtype: int """ a=collections.Counter(s) ans = [] for i in a: if a[i] == 1: ans.append(i) if ans == []: return -1 return min([s.find(j) for j in ans])其他思路:
def firstUniqChar(self, s): """ :type s: str :rtype: int """ letters='abcdefghijklmnopqrstuvwxyz' index=[s.index(l) for l in letters if s.count(l) == 1] return min(index) if len(index) > 0 else -1
237. Delete Node in a Linked List
删除节点
我的代码:感觉有时候出现的问题好蠢
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val ,node.next= node.next.val,node.next.next
阅读全文
0 0
- Leetcode 算法题07
- Leetcode sql算法题
- leetcode算法刷题
- LeetCode | HouseRobber 算法题
- leetcode算法第二题
- LeetCode算法题典
- leetcode算法刷题
- HappyNumber leetcode算法题
- Leetcode 算法题01
- Leetcode 算法题02
- Leetcode 算法题03
- Leetcode 算法题04
- Leetcode 算法题05
- Leetcode 算法题06
- Leetcode 算法题08
- Leetcode 算法题09
- LeetCode算法第三题
- Leetcode 算法题10
- 关于adr指令的理解
- [AtCoder Beginner Contest 077]D-Small Multiple
- atcoder-077S
- 20.读书笔记收获不止Oracle之 索引回表和优化
- 21.读书笔记收获不止Oracle之 索引回表效率
- Leetcode 算法题07
- 编写c++程序过程中出现的错误 annonymous type with no linkage used to declare variable
- 22.读书笔记收获不止Oracle之 索引特性活用
- 二叉树的深度和广度优先遍历
- 用C语言协助办公_01 找出所有不对劲的人
- Servlet:相对路径、绝对路径以及路径跳转问题
- Orders POJ
- 十年后,程序员还会有今天的收入吗?
- codeforces 884E Binary Matrix 并查集,滚动数组