自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 2013. 检测正方形

给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。实现 DetectSquares 类:DetectSquares() 使用空数据结构初始化对象vo

2021-10-02 20:24:23 153

原创 2012. 数组美丽值求和

给你一个下标从 0 开始的整数数组 nums 。对于每个下标 i(1 <= i <= nums.length - 2),nums[i] 的 美丽值 等于:2,对于所有 0 <= j < i 且 i < k <= nums.length - 1 ,满足 nums[j] < nums[i] < nums[k]1,如果满足 nums[i - 1] < nums[i] < nums[i + 1] ,且不满足前面的条件0,如果上述条件全部不满足返回

2021-10-02 20:20:22 121

原创 剑指 Offer 63. 股票的最大利润

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。解题思路:使用动态规划。dp[i]=max(dp[i],prices[i]-cost). cost存储之前的最小值。计算之后的每个元素和之前的...

2021-10-02 11:29:30 115

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例2:输入: [0,1,2,3,4,5,6,7,9]输出: 8比较中点数字和下标。如果相同说明之前的数字都相同,不同的数字在中点左边 left=m+1如果不同说明中点之前有不同的数字 right=m-1class Solution(object): def.

2021-10-01 19:39:22 69

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I

统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0解题思路:找到target的右边界和target-1的右边界相减即可。使用二分法num[m]<=target 说明右边界在中点右侧 left=m+1num[m]>target 说明右边界在中点左侧 right=m-1class Solu.

2021-10-01 19:34:47 65

原创 剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3解题思路:1.使用哈希表记录数字2. 将数组下标和数字进行交换直到数字和下标一致为止。遍历数组出现和之前数字一样的就输出出来class Solution(object): def find.

2021-10-01 19:26:19 60

原创 剑指 Offer 35. 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。解题思路:两种方法。第一种建立哈希表原链表节点为索引,复制的链表节点为值。建立好之后按照原链表的结构,直接将复制的链表的random 和 next 进行赋值。时间复杂度为o(n)空间复杂度为o(n)"""# Definition for a Node.class Node: def __init__

2021-09-29 20:13:16 59

原创 剑指 Offer 24. 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路:使用双指针,先存储后指针的next,再将后指针的next指向前指针节点,再将两个指针都向后移动一个位置。# Definition for singly-linked list.# class ListNode(object):# def __ini

2021-09-29 20:05:14 61

原创 剑指 Offer 06. 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。解题思路:利用递归的性质遍历链表,将遍历的结果放入一个队列中。# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def reversePr

2021-09-29 19:59:46 66

原创 剑指 Offer 30. 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。解题思路:使用一个辅助栈,若输入主栈的数据小于辅助栈中的顶部数据就同时将数据压入辅助栈中。弹出时如果主栈的数据和辅助栈的数据一样就将二者的顶部数据都弹出。求min时将辅助栈中的数据弹出即可。class MinStack(object): def __init__(self): """ initialize

2021-09-29 19:57:01 61

原创 剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]解题思路:使用两个栈进行操作,当需要进行pop操作时将一个栈的数据依次放入另一个栈...

2021-09-29 19:52:33 69

原创 剑指offer 寻找一个旋转数组中的最小值

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个可能存在 重复 元素值的数

2021-09-28 20:38:23 58

原创 剑指offer 搜索二维矩阵

编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true思路:从右上角开始遍历比target大就 i-- 比target小就j++. 找到后返回true 找不到就返回fal...

2021-09-28 19:56:22 106

原创 查找矩阵中有几个”块“

今天做了一个面试题 要求是查找矩阵中有几个小块。输入矩阵如下:6 701 1 10 010 010 0 0 00 0 0 010 00 0 01 1 101 1 1010 01 1 1 10 0 0输出为 4思路是首先遍历矩阵找到 1 之后将相同块的 1 变为 0 计数count+1.C语言代码如下:#include <stdio.h>#include <stdlib.h>int n,m;int ...

2021-09-27 21:48:32 175

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除