自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 带障碍物的搜索算法(待DEBUG)

#include <vector>#include <iostream>#include <map>#include <string.h>using namespace std;typedef struct{ // 操作类别 空白移动 0 推动障碍物 1 int operate; // 移动方向 pair<int, int> direction; // 移动目标点 pair<int

2021-10-13 00:35:28 134

原创 leetcode-dp和贪心

简单动态规划题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。思路动态规划的公式 maxArea = Max (min(height[lef...

2020-05-05 17:44:05 166

原创 leetcode-4数之和 被95%的人超过

四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为...

2020-05-05 17:12:37 147

原创 leetcode 3 找到最大不重复子字符串

无重复字符的最长子串题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复...

2020-04-12 20:58:54 199

原创 leetcode 2 两数相加 Go版

思路补齐两个链表长度,然后直接开加,重点在最后一步的判断,如果加到最后标志位为1,那么需要再分配一个节点,并赋值为1./** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } *//** * Definition for sin...

2020-04-12 19:34:03 105

原创 leetcode 1 - 两数之和 (GO的三种思路)

暴力法两层循环,外层定第一个变量,内层找和第一个变量之和为target的另一个变量。func twoSum(nums []int, target int) []int { for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { if nums[i] +...

2020-04-12 18:40:24 151

原创 leetcode 1 - 两数之和 (Go版本)

一样的算法Go跑的比C还快func twoSum(nums []int, target int) []int { for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { if nums[i] + nums[j] == target { ...

2020-04-12 18:04:13 62

原创 leetcode-回文排列

题目给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:“tactcoa”输出:true(排列有"tacocat"、“atcocta”,等等)思路首先判断回文排列,可以想象就是哈希表。如果为回文的重排列,那么我们首先判断字符串是奇数还是偶数奇数:如果字符串是奇...

2020-03-27 23:21:08 222

原创 leetcode-最小绝对差

题目给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。示例 1:输入:arr = [4,2,1,3]输出:[[1,2],[2,3],[3,4]]思路首先对初始数组排序,排完序找出最小绝对差,然后找出最小绝对差的数量,开始在堆上分配二维数组。需要注意的是,在堆上分配二维数组,传入的returnColumnSizes参数是一个二级指...

2020-03-25 23:39:45 338

原创 leetcode-斐波那契数列

题目斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1....

2020-03-25 23:02:21 204

原创 leetcode-重排链表

题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为...

2020-03-25 17:27:27 87

原创 leetcode-旋转链表

题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->...

2020-03-25 16:59:38 98

原创 leetcode-奇偶链表

题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2...

2020-03-25 16:36:20 120

原创 leetcode-面试题2.05链表求和

题目给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912进阶:假设这些数位是正向存放的,请再做一遍。示例:输入:(6 -&gt...

2020-03-24 15:55:56 578

原创 leetcode-两数相加II

题目给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7...

2020-03-24 15:09:02 86

原创 leetcode-分割链表

题目编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->...

2020-03-24 11:43:17 172

原创 leetcode-链表相加

题目给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912思路采用原地算法,比较两个链表长度,如果长度一致,那么链表相加到任一链表...

2020-03-23 14:37:47 242

原创 leetcode-验证回文字符串2

题目给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。思路1:暴力法1)不删除字符,验证是否为回文2)任意删除一个字符做判断,看是否为回文串,细节是实现字符数组的左移覆盖和判断是否为回文串2:双指针判断,搞一个left指针和right指针,左指针和右指针一直判断是否指向的值相等,如果相等,left++,right–。如果不相等,则判断删除任意一个字符,是否为回文串,如...

2020-03-21 22:53:22 115

原创 leetcode-旋转字符串

题目给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。思路采用递归的思路进行,每次旋转1位。思考递归终止条件,最多旋转字符串长度次数。旋转一位思路:采用一个临时变量来存取数组头部变量,然后从头到尾遍历数组,每一个都左移,...

2020-03-19 23:19:35 276

原创 leetcode-最长回文串

题目给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。思路哈希表,使用哈希表将字符串中出现字符的次数都记录下来,对于出现偶数次的,我们可以全部用来构造回文串,对于出现奇数次的,我们可以减1来构造回文串。特别的,如果字符串字母出现次数全为偶数次,...

2020-03-19 12:36:35 190

原创 leetcode-数组中数字出现的次数

题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。思路1: 位运算,但是不具有一般性,如果把题目改一改就不行了2: 哈希表,具有一般性,可以查看出现任意次数的数字,但是牺牲了空间,这里题目给出2<nums<10000,所以要在堆上分一个10000的数组,对于原始数组每一个数字,...

2020-03-17 18:20:21 264

原创 leetcode-拼写单词

题目给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = [“cat”,“bt”,“h...

2020-03-17 17:23:36 285

原创 一些学习感悟

反思情绪首先,必须反思一下最新一段时间,因为刚离职,有一段时间不知道该干啥,又想去考研,又想去工作,特别烦闷,只能天天打打游戏,敲敲代码麻痹自己。去逼乎问意见,看别人经历,发现还是这,没啥用。自己会刻意去逃避一些东西,其实仔细想一想,确实自己挺菜的,这么大人还一天天这么颓废。行动上不是巨人,战略上却是矮子,对于自己的未来规划,仍然充满了迷茫。但是who cares ,自己必须勇敢的做出选择,...

2020-03-16 18:53:01 915

原创 leetcode-面试题01.06 字符串压缩

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。思路双指针判断前后是否相等,相等数目加1。细节在于在新串存入字符之后如何存字符数量,int型变量如何转换为字符串,这里不让用库函数itoa,所以我们可以先判断整数...

2020-03-16 13:07:25 133

原创 leetcode-面试题30 实现O(1)的min函数的栈

思路是用dp动态规划,一开始想只在最小栈结构体里面存一个min变量,不断Push不断更新,然而在最小站pop时,无法确定是否pop的值是不是最小的。思考,只用一个变量肯定无法记录所有最小值状态,至少要搞一个数组。所以在最小栈结构体里面又存了一个最小值栈来存取最小值,当push的值比当前最小值(存到这个数组栈里)还小时,我们将最小值栈push进这个值,当push的值比当前最小值大时,我们将之前的最...

2020-03-16 00:53:57 162

原创 KMP算法-动态规划

核心算法核心是回溯子串指针,回溯值从子串next数组找出。相比较朴素的字符串匹配算法,主串指针不再回溯,子串next数组由子串前缀后缀重复字母数量确定。#include <stdio.h>#include <string.h>void get_next(char* T,int *next){ int i,j; i=1; j=0; ne...

2020-03-14 23:52:18 261

原创 朴素的字符串匹配算法

#include <stdio.h>#include <string.h>int Index(char* s,char* t,int pos){ int i=pos; int j=0; int len1=strlen(s); int len2=strlen(t); while(i<=len1 && j<...

2020-03-14 19:29:20 271

原创 循环队列-数组实现队列ADT

#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef int QElemType;typedef int Status;#define OK 1#define ERROR 0typedef struct{ //结构体定义 QElemType...

2020-03-14 19:07:24 371

原创 斐波那契数列-了解递归思想

递归老实说递归有点慢,大量的递归调用会建立函数的副本,耗费大量的时间和内存,主要体现在栈空间的浪费#include <stdio.h>int Fbi(int i){ if(i<2){ return i==0?0:1; } return Fbi(i-1)+Fbi(i-2);}int main(void){ int i;...

2020-03-14 18:23:22 149

原创 大话数据结构-链栈ADT实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define MAXSIZE 100typedef int SElemType;typedef int Status;#define ERROR 0#define TRUE 1#define OK 1#define FALSE 0...

2020-03-14 17:47:38 169

原创 大话数据结构-数组结构栈的实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define MAXSIZE 100typedef int SElemType;typedef int Status;#define ERROR 0#define TRUE 1#define OK 1#define FALSE ...

2020-03-14 13:52:23 252

原创 重刷大话数据结构-单链表ADT实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <time.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status; //状态type...

2020-03-14 12:36:23 145

原创 leetcode-23合并k个排序链表

暴力解法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */int comp(const void* p1,const void* p2){ return (*(int*) p1- *(int*) p2...

2020-03-08 14:22:42 67

原创 算法导论2.3从归并排序了解分治思想

归并排序归并排序中最重要的就是将两个已排序子数组进行归并,我们选择重复比较每个子数组得大小,将小的重新放置到原始组。在每个临时子数组的最后设置哨兵值,设置为一个特殊值INT_MAX,这样可以保障当一个子数组到达哨兵值后永远会将另一个子数组赋值给原数组,除非两个子数组都到达哨兵值。当这种情况出现,两个子数组均已被赋值给原数组,原数组已被合并为一个新的排序数组。#include <stdio...

2020-03-08 11:49:22 95

原创 算法导论第二章 2.1节

两个n位二进制整数加起来的问题主要处理一个进位问题#include <stdio.h> #include <stdlib.h>int main(void){ int arr1[]={1,0,1}; int arr2[]={1,1,0}; int* num=(int*) malloc(sizeof(int) * 4); num[0]=0; int c...

2020-03-07 22:49:20 109

原创 哈希表实现

链表指针数组实现哈希表哈希表,又称散列表,目的是实现更快的搜索,其利用数组的特性,理想情况下(无冲突,事实上也不可能)可以实现O(1)的时间复杂度.本文给出用数组来存链表的方式来避免有限集描述更大集的冲突问题。哈希表数据结构实现结构体定义typedef struct Node{ int data; struct Node* next;}ListNode;struct Has...

2019-10-16 22:57:58 253

原创 python 知识点感悟

1.对于函数及函数的参数python里面的函数的目的在于封装数据,我们只需要定义好函数的接口(函数的参数)就可以实现函数的调用,这样我们调用函数的时候不必要考虑函数内部的复杂逻辑,直接用就好了。函数是编程语言中的核心概念,是接近本质的概念,一定要理解透彻。关于函数的参数,可以分为几类。分别为位置参数,默认参数,可变参数,关键字参数,命名关键字参数。我的理解是我们可以从传入函数的数据类型来表示这...

2018-12-11 20:37:46 231

原创 python爬取gif发源地

今天又改进了半天的代码,之前的下载下来就在一个大文件夹里,现在采取分文件夹爬取,对于编码,采用了html=response.text.encode(‘iso-8859-1’).decode(‘utf-8’) 这种形式,先将html转换为unicode编码,再转化为utf-8编码。这样就能够提取出没有乱码的汉字了,将其定为文件夹里的分文件夹名。分别爬取。import osimport requ...

2018-12-10 18:10:11 3135 1

空空如也

空空如也

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

TA关注的人

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