![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
小小小姝
一个试图苦苦挣扎的菜鸡。。
展开
-
leetcode:NC127 最长公共子串
题目:给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1输入:"1AB2345CD","12345EF"返回值:"2345"备注:1≤∣str1∣,∣str2∣≤5 0001 \leq |str_1|, |str_2| \leq 5\,0001≤∣str1∣,∣str2∣≤5000思路:动态规划问题。先确定状态,f(i, j)表示str1中前i个字符和str2中前j个字符中...原创 2021-08-25 20:07:38 · 217 阅读 · 0 评论 -
leetcode之按之字形顺序打印二叉树
题目:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]思路:比照层序遍历的方法。这里使用两个栈来实现存储每层节点。答案要求分层输出,是一个二维数组的形式,所以对于其中的一层来说,先利用stack1中的数据(这是上一层遍历时存到栈中的这一层的值)存到list中,然后按照层数分辨出左右子节...原创 2021-08-25 15:20:29 · 274 阅读 · 0 评论 -
leetcode之数组排序
题目:给你一个整数数组nums,请你将该数组升序排列。摘抄自leetcode大佬JavaEdison的代码class Solution { public int[] sortArray(int[] nums) { if(nums.length <=1)return nums; //qSort(nums,0,nums.length-1); //selectSort(nums); // insertSort(nums); ..原创 2021-08-23 16:20:52 · 177 阅读 · 0 评论 -
leetcode之合并两个有序数组
题目:给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。代码:class Solu..原创 2021-08-19 15:28:24 · 137 阅读 · 0 评论 -
leetcode之有效的括号(C++)
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法:思路:一开始,我使用栈作为s的存储,遇到括号在经过选择后就存入栈,...原创 2021-08-17 21:42:13 · 144 阅读 · 0 评论 -
leetcode之存在重复元素
题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。一开始自己使用了冒泡排序,然后就超时了。。。。horrible然后看了官方回答和题解,总结有三种方法:快排、哈希、大佬的方法。方法一:就是直接调用sort函数就可,然后再比较。但是!这里std:sort和sort方法竟然是不一样的,前者更快一些,我网上搜了一下,小白还是不理解,我打算沉淀一下再去专门搞一下这个。方法二:哈希,C++.原创 2021-08-17 16:28:48 · 113 阅读 · 0 评论 -
C++之哈希表(STL容器)
在刷算法题的时候,总是会遇到哈希表结构,而C++的STL是自带有哈希结构的。注:STL为C++标准库,一般有三个常用的:HP STL;P.j.Plauger STL;SGL STL。 其中HP STL是第一个实现的版本,也是大多数STL的蓝本。这三个里面,HP STL和SGL STL是开源的。SGL STL被Linux的C++编译器GCC采用,可读性较强。哈希表定义:哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通...原创 2021-08-17 16:07:04 · 1352 阅读 · 0 评论 -
leetcode之用队列实现栈
这是我在leetcode的正经八百的第二道题,思路还是没怎么又,所以膜拜了几个大佬和官方的答案,我发现答案看懂了以后就好简单呀,真不知道自己一开始为啥怎么都想不到!所以就简单记录一下。题目:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元...原创 2021-08-16 22:07:15 · 88 阅读 · 0 评论 -
区分递归和迭代
首先,二者有相通的地方,不然的话也不至于容易弄混哈哈哈。但是,这两者在算法上可以相互替换的情况很少。递归:通常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。 按照我的理解来说,就是一个函数不断地使用自己,A使用A。迭代:重复反馈活动的过程,一次迭代的结果作为下一次迭代的初始值,不断地重复。A不断重复使用B。按照结构来区分的话:迭代属于环结构(一次迭代的结果作为下一次迭代的初始值);递归属于树结构(递归---递推+回归;递推...原创 2021-08-15 16:21:23 · 256 阅读 · 0 评论 -
合并两个有序链表(2)
后序来啦!!!之前说按照自己的思路走一走这个程序,今天走了一下,还是发现了一个很大的问题,那就是链表的first没有办法固定,或者说我不知道怎么固定!!!!!!horrible!!!如果有大佬知道怎么固定的话,可以留言告诉我嘛!题目和代码放到下面:题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。/** * Definition for singly-linked list. * struct ListNode { *原创 2021-08-14 20:54:59 · 77 阅读 · 0 评论 -
KMP字符串模式匹配算法之失败回退(部分摘抄)
今天看KMP算法,对于next函数的理解一直有些困难,找了好久网上的资料,老师的PPT,最后终于找到了一个我可以理解的说法。有关KMP算法,因为模式匹配(找字符串子串位置)使用暴力回溯很浪费时间,所以诞生了KMP算法。KMP算法引用了一个next函数,计算目标字符串的next参数,这里有两种标记方法,我比较倾向于以-1开头的,因为可以把它看做位移,便于我的理解;另一种是0开头的。KMP:(1)next算法:使用递推的方法,next[1]=0;next[j]=k;next[j+1]=?...原创 2021-08-14 17:50:42 · 1101 阅读 · 0 评论 -
链表---合并两个有序链表
看完了第二章数据结构,想着做一下题题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。第一次做力扣上的题,有点拿不准思路。一开始的思路是仿照课本上顺序表的应用,即集合的合交做的:l1和l2进行比较,l2中有的保留,没有的写入l2,但是操作起来小问题太多了,比如插入的时候链表为空,或者只有一个结点(l1或l2),用后插法和前插法的使用地区等等。所以大体思路有了,但是不完善,最后出于对细节的忽略,放弃了这个解法,去看了官网上的解决办法,这里先看暴原创 2021-08-11 20:00:23 · 174 阅读 · 0 评论 -
数据结构与算法--复习总结
数据结构与算法–复习总结下面是我手写的笔记,大体记录下复习了什么。会持续更新的。。。原创 2021-05-08 23:07:56 · 69 阅读 · 0 评论 -
数据结构----单链表
数据结构之单链表单链表继上一篇线性表之顺序表,这一篇文章接着来讲讲线性表的另一个表现形式:单链表,【注】单链表不可以顺序存取!以下是部分代码:#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;//typedef为重命名方法,这里将struct LNode重命名成了LNode 和LinkList//LNode强调结点,而LinkList强调的是一原创 2021-04-24 23:39:05 · 110 阅读 · 0 评论