![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
小小小姝
一个试图苦苦挣扎的菜鸡。。
展开
-
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 评论 -
合并两个有序链表(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 评论 -
C++中的&
又遇到一个问题!有关void hanshu(int& a,int& b){。。。}中,&和*的不同,这里找到一个大佬的解释,超棒!解决了我的困惑!定义方法的时候,int add(int& a,int& b){}和int add(int a,int b){}的区别:int add(int a,int b){}在调用方法传入参数的时候,方法内部会定义两个变量a和b,并且会为这两个变量开辟新的的地址,然后将传入的参数的值赋值到这两个地址。也就是说相对于拷贝了一份传入原创 2021-08-12 16:15:47 · 149 阅读 · 0 评论 -
c++中指针的相关知识
在看书中链式栈中,看到了删除栈中有以下语句:ListNode *p=new ListNode();p = top; top = top->link; delete p;这里p的出现引起了我的困惑。可能是c++基础不牢固,所以进行了一系列搜集资料,最后理解如下:1、首先说一下指针的有关知识。例,int *p;p = &3;p指向的是地址,*p指的是数值。或者说,在内存中,p所在的那块内存中存的是一个地址数值,这里是3这个数值的地址存到了p所指的那块内存里。*p=*q,意思原创 2021-08-12 15:55:55 · 370 阅读 · 0 评论 -
链表---合并两个有序链表
看完了第二章数据结构,想着做一下题题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。第一次做力扣上的题,有点拿不准思路。一开始的思路是仿照课本上顺序表的应用,即集合的合交做的:l1和l2进行比较,l2中有的保留,没有的写入l2,但是操作起来小问题太多了,比如插入的时候链表为空,或者只有一个结点(l1或l2),用后插法和前插法的使用地区等等。所以大体思路有了,但是不完善,最后出于对细节的忽略,放弃了这个解法,去看了官网上的解决办法,这里先看暴原创 2021-08-11 20:00:23 · 174 阅读 · 0 评论 -
C++中符号的使用----:: . -> :
在C++中,这四种符号理解总是有些错误,记录一下1、::,这里常用的是空间作用域,命名空间作用域,用来注明所使用的类、函数属于哪一个命名空间的,还有其他作用,这个大佬写的很是详细。简单用我的理解就是Class::函数,这个意思。2、.,这个一般是对象或者结构体调用的时候采用的。3、->,这个一般是指针使用,指针中的成员提取。但是指针只能是指向类、结构、联合的指针。4、:,这个一般是继承的时候使用。...原创 2021-08-10 21:04:13 · 805 阅读 · 0 评论 -
c++------文件输入输出
需要用到一个头文件<fstream>;(该代码来源于《数据结构》(第二版)殷人坤)要创建一个输入(输出)流,必须声明它为ifstream(ofstream)类的实例。执行输入输出操作的流必须声明它为fstream类的实例。#include <stdlib.h>#include <stdio.h>#include <fstream> //fstream和fstream.h的不同可类比iostream和iostream.h的不同#inclu原创 2021-08-09 17:54:34 · 162 阅读 · 0 评论 -
c++有关iostream和iostream.h
有关iostream和iostream.hiostream和iostream.h在接口和执行上不同。link这里按照我的需要记录一下:1、一般新代码中使用iostream,但如果处理过去的代码,可以使用iostream.h表示继承,以保持代码一致性。2、iostream表示你使用的是标注命名空间(using namespace std;),这是遵循c++标准的;iostream.h没有遵循c++标准,不建议使用!...原创 2021-08-09 17:43:59 · 614 阅读 · 0 评论