第一天
1.反转列表
题目表述:输入一个链表,反转链表后,输出新链表的表头。
class Solution:
def ReverseList(self, pHead):
# write code here
pre = None
while pHead:
next = pHead.next
pHead.next = pre
pre = pHead
pHead = next
return pre
2.二分查找
题目表述:请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
# 二分查找
# @param n int整型 数组长度
# @param v int整型 查找值
# @param a int整型一维数组 有序数组
# @return int整型
#
class Solution:
def upper_bound_(self , n , v , a ):
# write code here
for i in range(n):
if v <= a[i]:
return i+1
return n+1
3.括号序列
题目表述给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
# @param s string字符串
# @return bool布尔型
#
class Solution:
def isValid(self , s ):
# write code here
t = []
for ss in s:
if ss == "[" or ss == "]" or ss == "{" or ss == "}" or ss == "(" or ss == ")":
p = 1 #包含以上六种符号才可进行下面操作
else:
return False #如果假定输入字符为以上6种符号,这个if中的内容可去掉。
if ss == "[" or ss == "{" or ss == "(":
t.append(ss)
elif ss == "]":
if t == [] or t.pop() != "[":
return False
elif ss == "}":
if t == [] or t.pop() != "{":
return False
elif ss == ")":
if t == [] or t.pop() != "(":
return False
return t == []
实习僧--------------------------------------------------------------------------------------