136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1] 输出: 1
示例 2:
输入: [4,1,2,1,2] 输出: 4
代码如下:
class Solution: def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ nums.sort() mark = 0 if len(nums) == 1: return(nums[0]) else: for i in range(len(nums)-1): if nums[i] == nums[i+1] : mark += 1 else: if mark == 0: return nums[i] else: mark = 0 if nums[-1] != nums[-2]: return nums[-1]
102. 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回其层次遍历结果:
[ [3], [9,20], [15,7]
代码如下:44ms通过,采用队列的广度优先遍历
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def levelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ if root is None: return [] res = [] queue = [root] while queue: nodes = [] values = [] for node in queue: if node.left: nodes.append(node.left) if node.right: nodes.append(node.right) values += [node.val] res += [values] queue = nodes return res
#### the second method stack = [(root,0)] res = [] while stack!=[]: node,level = stack.pop() if node: if len(res) < (level+1): res.insert(0,[]) res[-(level+1)].append(node.val) stack.append((node.right,level+1)) stack.append((node.left,level+1)) return res[::-1]互相学习,互相指教。