剑指Offer
coderate
这个作者很懒,什么都没留下…
展开
-
反转链表
题目定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。Python题解def reverse_list(head): q = None p = head reverse_head = None while p: r = p.next if r is None: reverse_hea...原创 2018-04-22 17:34:51 · 124 阅读 · 0 评论 -
数值的整数次方
题目实现函数power(base, exponent),求base的exponent次方,不能使用库函数。Python题解def power(base, exponent): if exponent == 0: return 1 if exponent == 1: return base res = power(base,...原创 2018-04-23 09:47:25 · 118 阅读 · 0 评论 -
二进制中1的个数
题目实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如9的二进制是1001,有2位是1。因此输入9,该函数输出2。Python题解def num_of_1_in_binary(n): cnt = 0 while n: cnt += 1 n = n & (n - 1) return cnt...原创 2018-04-22 15:17:21 · 293 阅读 · 0 评论 -
旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转,输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。如【3, 4, 5,1,2】为【1, 2, 3, 4, 5】的一个旋转,求数组的最小值。Python题解def min_num_in_rotated_arr(arr): index_1 = 0 index_2 = len(arr) - ...原创 2018-04-22 20:22:17 · 151 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如[1, 2, 3, 2, 2, 2, 5, 4, 2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。Python题解def partition(data, start, end): left, right = start, end pivot = data[left] ...原创 2018-04-22 17:33:14 · 109 阅读 · 0 评论 -
和为s的两个数字&和为s 的连续正数序列
题目1输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对,输出所有对。Python题解def find_num_with_sum(data, sum): hash_set = set() res = [] for idx, num in enumerate(data): another_num = ...原创 2018-04-22 16:41:00 · 136 阅读 · 0 评论 -
连续子数组的最大和
题目输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。Python题解def find_greatest_subarray(arr): if arr is None or len(arr) == 0: return 0 sum = arr[0] max_n...原创 2018-04-23 09:46:57 · 111 阅读 · 0 评论 -
根据树的遍历重建二叉树
题目根据前序遍历和中序遍历重建二叉树根据中序遍历和后序遍历重建二叉树Python题解1.def build_tree(preorder, inorder): map = {} for idx, item in enumerate(inorder): map[item] = idx return helper(preorder, ...原创 2018-04-21 19:17:16 · 231 阅读 · 0 评论 -
剑指Offer选题列表
题目来源于何海涛的《剑指Offer》。版权归其所有。题目略有删减,筛选出个人觉得比较适合面试的题目。3. 二维数组中的查找 【Medium】 https://blog.csdn.net/leel0330/article/details/797861986. 根据树的遍历重建二叉树【Medium】 https://blog.csdn.net/leel0330/art...原创 2018-04-21 19:18:40 · 320 阅读 · 0 评论 -
二维数组中的查找
题目在一个二维数组中,每一行都是从左到右递增,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断该数组是否包含该整数。Python题解#encoding=utf-8def find_num_in_matrix(matrix, rows, cols, target): found = False if matrix is...原创 2018-04-22 14:20:56 · 166 阅读 · 0 评论 -
两个链表的第一个公共节点
题目输入两个链表,找出它们的第一个公共节点。Python题解def get_list_len(head): list_len = 0 while head is not None: list_len += 1 head = head.next return list_lendef find_first_common_...原创 2018-04-22 15:18:39 · 172 阅读 · 0 评论 -
数组中只出现一次的数字
题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请在时间复杂度为O(n),空间复杂度为O(1)的情况下,找出这两个数字。Python题解def find_first_bit_1(num): index_1 = 0 while num & 1 == 0: num = num >> 1 index_1 ...原创 2018-04-22 16:41:37 · 134 阅读 · 0 评论 -
数字在排序数组中出现的次数
题目统计一个数字在排序数组中出现的次数,例如输入排序数组[1, 2, 3, 3, 3, 3, 4, 5],由于3出现了4次,所以输出4。Python题解def get_first_k(data, k, start, end): if start > end: return -1 middle_idx = (start + end) / 2...原创 2018-04-22 20:23:11 · 107 阅读 · 0 评论 -
二叉搜索树转换成双向链表
题目给出一个二叉搜索树,将其转换成双向链表。Python题解class Solution(object): def __init__(self): self.last_node_in_list = None def convertBinaryTreeToDoubleList(self, root): if root is None: ...原创 2018-05-09 10:00:40 · 400 阅读 · 0 评论