
算法数据结构
程序喵阿呆
道济天下,智周万物
展开
-
力扣1206--跳表
挑战一下hard,果然难搞。原创 2024-06-18 11:33:37 · 558 阅读 · 0 评论 -
LeetCode [23] 合并K个有序链表
前有合并两个有序链表,感觉比较简单,没有认为合并K个升序链表难,其实直观上算法都是比较简单:首先对比每一个链表头部元素,找出最小的,放在目标链表中,更新这个链表头,直到遍历所有链表。主要是一些细节处理上。原创 2023-08-01 11:29:17 · 286 阅读 · 0 评论 -
LeetCode [86] 分割链表
创建两个链表头,把以target为目标的分到两个链表中。自己想的,不知道读者是否能看懂,参考注释。原创 2023-07-27 14:50:45 · 169 阅读 · 0 评论 -
LeetCode[111] 二叉树的最小深度
类似二叉树的最大深度,最大深度是自顶向下一直遍历,直到找到最底部的节点。最小深度是遍历,找到最近的叶子节点即可。原创 2023-07-21 14:50:09 · 115 阅读 · 0 评论 -
LeetCode [110] 是否为平衡二叉树
简单题,也可以挺有意思,加深理解。原创 2023-07-21 10:57:29 · 85 阅读 · 0 评论 -
LeetCode [101] 对称二叉树
好久没有刷力扣了,看看之前刷过的题目,再做一遍有新感觉。原创 2023-07-20 13:56:53 · 101 阅读 · 0 评论 -
LeetCode [191] 位1的个数
知识点:位运算。原创 2023-01-05 14:48:29 · 119 阅读 · 0 评论 -
LeetCode [168] Excel表列名称
一个easy题有点意思,记录一下。原创 2023-01-05 10:59:26 · 125 阅读 · 0 评论 -
LeetCode 146 LRU算法-hash+双链表、unorder_map
第二种解法:利用unordered_map本身进行匹配,实验表明,unordered_map是头插法,并且没有rbegin()迭代器,使用end()达不到想要的效果,所以每次删除数据冷的结点,需要遍历整个hash表,到第17个case通过不了。第一种解法:hash+双向链表。原创 2022-01-08 23:33:43 · 326 阅读 · 0 评论 -
反转链表-三个指针
struct node* reverse_linklist(struct node*head){ if(head == NULL || head->next == NULL) return head; struct node* beg = NULL; struct node* mid = head; struct node* end = head->next; while(1) { mid...转载 2021-12-27 16:45:56 · 180 阅读 · 0 评论 -
二叉树实现
#include<stdio.h>#include<stdlib.h>#define NAMESIZE 32struct score_st{ int id; char name[NAMESIZE]; int math; int chinese;};struct node_st{ struct score_st data; struct node_st *l,*r;};void print_s(struct s...原创 2021-12-13 20:51:26 · 3630 阅读 · 0 评论 -
HashMap的使用
尝试自己写一个HashMap,统计一个数组中各个元素的个数,数组设置的比较小,后续再优化,冲突的时采用地址链接法。#include<stdio.h>typedef struct Node{ int val; int count; struct Node *next;}node;#define seed 7node *p[seed] = {NULL};int add_hash(int key){ int idx = key * key % seed; if(p[id原创 2021-08-18 23:41:31 · 213 阅读 · 0 评论 -
leetcode--多数元素即众数
leetcode 多数元素题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。第一种解法:go中的map,很简单func majorityElement(nums []i...原创 2021-08-18 18:03:42 · 183 阅读 · 0 评论 -
leetcode只出现一次的数字
只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4第一种解法:思考:首先不考虑说明部分,不考虑空间复杂度和时间复杂度,看到题目中有个限制,除了唯一元素外,其他元素都均出现两次,遍历整个数组,把出现两次的元素都标记0,最后再遍历一把数组。如果全部.原创 2021-08-16 21:15:52 · 276 阅读 · 0 评论 -
leetcode6-Z字型变换(超好理解--暴力法)
6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例1...原创 2020-08-10 17:03:20 · 246 阅读 · 0 评论 -
leetcode4-求两个正序数组的中位数(二分查找法待补充)
#include<stdio.h>#include<malloc.h>double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){ if(nums1Size + nums2Size == 0) return 0; if(nums1Size == 0) { if(nums2Size % 2 == 0) ...原创 2020-08-06 23:16:51 · 159 阅读 · 0 评论 -
leetcode8-字符串装整形(atoi)--注意越界
8. 字符串转换整数 (atoi)请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字..原创 2020-08-06 16:45:35 · 276 阅读 · 0 评论 -
leetcode12-整形数字转罗马数字(疯狂使用goto)
12. 整数转罗马数字罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+...原创 2020-08-05 09:16:36 · 214 阅读 · 0 评论 -
leetcode9-回文数(简单0_0)
9. 回文数解题思路第一次首次提交就通过,没有错误和超时,yeah!!!首先把整形数每一位分离出来,存在一个数组中,从数组两端向中间挤进,判断是否相等。bool isPalindrome(int x){ if(x < 0) return false; if(x >= 0 && x < 10) return true; int a[20] = {0}; int len = 0; .原创 2020-08-04 20:54:01 · 121 阅读 · 0 评论 -
leetcode7-整数反转(简单0_0)
7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21解题思路主要思路:t = t*10 + x % 10;x = x /10;注意边界条件和反转之后越界问题int reverse(int x){ signed int t = 0; while (x / 10) { t ..原创 2020-08-04 20:36:39 · 146 阅读 · 0 评论 -
leetcode5-最长回文字符串(超时通不过,难受~_~)
解题思路:固定从头开始的第一个字符串,一个从尾开始,分别遍历每一个字符,看是否与固定的字符组成最长回文字符串。超时超时啊,有点想不通啊!char * longestPalindrome(char * s){ int i,j; int start,len; int length = strlen(s); if(length < 2) return s; len = 0; for(i = 0; i < len.原创 2020-07-16 21:02:52 · 304 阅读 · 0 评论 -
变异题---求字符串中最长的头尾字符相同的子串(letcode5刷题失败程序)
题目:(做letcode第5题:最长回文字符串时,把回文字符串理解错了,写成了如下程序,记录一下)给定字符串s,求s的所有子串中,头尾字符相同长度最长的子串。解答:char * longestPalindrome(char * s){ int length = 0; int i,j,m; int len = 0; int flag = 0; int start; length = strlen(s); if(length &.原创 2020-07-15 16:07:32 · 549 阅读 · 0 评论 -
letcode3-无重复字符的最长子串(加油)
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列...原创 2020-07-14 19:06:00 · 102 阅读 · 0 评论 -
letcode2-两数之和(内存击败100%用户*_*)
/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*addTwoNumbers(structListNode*l1,structListNode*l2){intsum=0;inti=1;while(NULL...原创 2020-07-13 20:41:18 · 307 阅读 · 0 评论 -
郝斌老师数据结构10(递归)
专题:递归【这对你的编码能力是个质的飞跃,如果你想成为一个很厉害的程序员,数据结构是必须要掌握的,因为计算机专业的本科生也达不到这水平!计算机特别适合用递归的思想来解决问题,但是我们人类用递归的思想来考虑问题就会感到十分困扰,这也是很多学过递归的人一直都搞不明白的地方!那是不是递归可以随便写,当然不是,有些同学一用递归程序就死翘翘了。递归的思想是软件思想的基本思想之一,在树和图论上面,几乎全是用递归来实现的,最简单,像求阶乘这种没有明确执行次数的问题,都是用递归来解决】定义: ...原创 2020-07-02 14:38:10 · 286 阅读 · 0 评论 -
郝斌老师数据结构9(循环队列)
队列定义:一种可以实现先进先出的存储结构分类:链式队列:链表实现静态队列:数组实现,静态队列通常必须是循环队列,减少内存浪费。链式队列:与链表类同,实现略循环队列:循环队列需要两个参数来确定: 1.front(队头) 2.rear(队尾)循环队列的几个定义解释: 1.队列初始化:front和rear均为0 2.队列非空:front指向队列第一个元素下标,rear指向队列最后一个元素的下一个元素下标 ...原创 2020-06-30 20:01:03 · 270 阅读 · 0 评论 -
郝斌数据结构8(两栈共享空间-参考大话数据结构)
数组有两个端点,两个栈有两个栈底,让一个栈的栈底在数组的开始端,即下标为0的地方;让另外一个在栈底在数组的末端,即下标为n-1的地方,如果两个栈增加元素,就是两端点向中间的延伸。#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#define Maxsize 100typedef struct SeqStack{ int data[Maxsize]; int top1; ..原创 2020-06-28 10:46:35 · 189 阅读 · 0 评论 -
郝斌数据结构6(双向链表)
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<stdbool.h>typedef struct Node{ int data; struct Node * prior; struct Node * pnext;}NODE, * PNODE;PNODE creat_list(){ int len = 0; int i = 0;原创 2020-06-23 14:32:18 · 149 阅读 · 0 评论 -
郝斌数据结构5(静态链表)
最近在看视屏学习郝斌老师的数据结构,但是视频中只是讲了一部分数据结构的内容,静态链表没有讲,我参考大话数据对静态链表进行尝试。静态链表其实是为了给没有指针的高级语言设计的一种实现单链表能力的方法。把静态链表整体看做是一个结构体数组,这个结构体中有两个数据域组成,data(数据)和cur(游标),数组的每一个下标都对应一个数据域和一个游标,数据域data存放数据,cur相当于单链表中的next指针,存放该节点的后继节点的坐标。为了方便插入数据,一般在把数组建得较大,以便有一些空闲空间在插入时不溢出。静原创 2020-06-22 16:57:57 · 131 阅读 · 0 评论 -
郝斌数据结构7(栈)
#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#include<malloc.h>typedef struct Node{ int data; struct Node *pNext;}NODE, *PNODE;typedef struct Stack{ PNODE pTop; PNODE pBottom;}STACK, *PSTACK;voi原创 2020-06-17 11:42:21 · 129 阅读 · 0 评论 -
郝斌数据结构4(链表程序)
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct Node{ int data; struct Node * pnext;}NODE, * PNODE;PNODE creat_list(){ int len = 0; printf("请输入您需要创建的链表长度:len = "); scanf("%d",&len);原创 2020-06-15 11:12:59 · 271 阅读 · 0 评论 -
郝斌数据结构3(typedef、链表基础知识)
typedef使用#include<stdio.h>typedef struct Student{ int sid; char name[100]; char sex;}* PST, ST;int main(void){ ST st; //struct Student st; PST pst = &st; //struct Student *pst = &st; pst->sid = 99; printf("%d\n",pst->sid);原创 2020-06-15 11:11:53 · 288 阅读 · 0 评论 -
郝斌数据结构2(连续存储-数组)
线性结构特点:把所有节点用一条直线串起来连续存储什么是数组:元素类型相同,大小相等数组的优缺点:优点:存取速度快缺点:插入删除元素很慢例子(我自己改变一部分,但大致结构没有变)#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<stdbool.h>struct Arr{ int *pBase;//数组的首地址 int cnt;//数组内有效字节数原创 2020-06-09 20:38:41 · 217 阅读 · 0 评论 -
郝斌数据结构1(预备知识、指针、跨函数使用内存)
概述数据结构的定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对元素进行排序等)而执行的相应操作,这个相应的操作也叫算法。数据结构 = 个体的存储 + 个体的关系存储算法 = 对存储数据的操作算法定义通俗的说算法是解题的方法和步骤衡量算法的标准:时间复杂度:程序大概要执行的次数空间复杂度:程序执行过程中大概所占用的最大内存空间难易程度 :易用易懂,避免过原创 2020-06-02 20:55:15 · 127 阅读 · 0 评论 -
学习数据结构和算法的两个利器
学习数据结构和算法的两个利器第一个工具是数据结构和算法可视化工具——Data Structure Visualizations。该工具由旧金山大学开发,地址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html上面介绍了可视化工具,下面再介绍一个数据结构和算法的代码库,地址:https://github.com/TheAlgorithms/Pythonhttps://github.com/TheAlgorithms/Javasc原创 2020-05-18 10:16:53 · 200 阅读 · 0 评论