classSolution: deffindPeakElement(self, nums: List[int]) -> int: # 左闭右闭 n = len(nums) l, r = 0, len(nums)-1 while l < r: mid = (l+r)>>1 if nums[mid] < nums[mid+1] or mid == n-1: l = mid+1 else: r = mid return l
题解1 - 实际上根本用不到栈: * 使用python内置库的iterate_tools.pairwise() * `for a, b in pairwise(data):`
<!-- tab 代码 -->
```python classSolution: defromanToInt(self, s: str) -> int: dmap = { 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, } res = 0 current = 0 n = len(s) for i inrange(0,n): if i == 0or dmap[s[i]] > dmap[s[i-1]]: current = dmap[s[i]] - current res += current current = 0 else: current = dmap[s[i]] return res + current
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ROMAN = { 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, } classSolution: defromanToInt(self, s: str) -> int: ans = 0 for x, y in pairwise(s): x, y = ROMAN[x], ROMAN[y] ans += x if x >= y else -x return ans + ROMAN[s[-1]]
classSolution: deflengthOfLastWord(self, s: str) -> int: s = s.split(' ') # s = [word for word in s if word != ''] idx = len(s)-1 while s[idx] == ' 'or s[idx] == '': idx -= 1 returnlen(s[idx])
1 2 3 4 5 6 7
classSolution: deflengthOfLastWord(self, s: str) -> int: s = s.split(' ') s = [word for word in s if word != ''] idx = len(s)-1 returnlen(s[idx])
1 2 3 4 5 6
classSolution: deflengthOfLastWord(self, s: str) -> int: s = s.split(' ') s = [word for word in s if word != ''] idx = len(s)-1 returnlen(s[idx])