![](https://img-blog.csdnimg.cn/20190905121201862.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
不在csdn继续分享,直接提交到github
https://github.com/smy-10/leetcode
smy..
这两年较忙,更新较少, 随机上线,乱写一气
感谢各位 谢谢大家!
展开
-
leetcode 26. 删除有序数组中的重复项
int removeDuplicates(std::vector<int>& nums) { std::sort(nums.begin(), nums.end()); auto it = std::unique(nums.begin(), nums.end()); nums.erase(it, nums.end()); return nums.size();}说下这个 std::unique 是该函数的作用是“去除”容器或者数组中相邻元素.原创 2021-08-06 17:45:40 · 86 阅读 · 0 评论 -
leetcode 21 合并两个有序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.原创 2021-08-06 17:20:13 · 53 阅读 · 0 评论 -
leetcode 20 有效的括号
这个题 刚开始思路不太对, 想的是用两个vector 一个存放左括号 一个存放右括号 然后用规则进行匹配写了100多行 还有些问题, 最后发现借助栈的特性 比较好解决这个class Solution {public: bool isValid(string s) { if (s.empty()) return false; std::stack<char> str; for (auto i = 0; i < s.size(.原创 2021-08-06 16:15:51 · 60 阅读 · 0 评论 -
leetcode 简单 14. 最长公共前缀
std::string longestCommonPrefix(std::vector<std::string>& strs){ if (strs.empty()) return ""; //找最长的string int maxLen = -1; int index = 0; for (int i = 0; i < strs.size(); i++) { if (maxLen < strs[.原创 2021-08-05 16:39:56 · 55 阅读 · 0 评论 -
leetcode 简单13. 罗马数字转整数
这个题目能看懂的话 不难, 就 I 可以放V左边 和 X 左边分别代表4和9那么我们把所有的可能都列出来就好了replace 要自己实现, std::string 没有现有的接口std::string replace(const std::string& str, const std::string& curStr, const std::string& toStr){ std::string s = str; for (auto i = 0; i &l..原创 2021-08-04 16:21:44 · 75 阅读 · 2 评论 -
leetcode 简单9.回文数
效率太差 先能跑通吧// leetcode.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include "math.h"#include <vector>#include <string>/*回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,.原创 2021-08-03 15:53:43 · 68 阅读 · 0 评论 -
leetcode 简单2整数反转
class Solution {public: int reverse(int x) { static int rangeValue = pow(2, 31) - 1; if (x <= -rangeValue || x >= rangeValue) { return 0; } int length = 0; int numClone = x; while (numClone) { .原创 2021-08-02 16:00:13 · 58 阅读 · 0 评论 -
leetcode 简单 1: 两数之和
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> resultVec; if(nums.size() == 0) { return resultVec; } .原创 2021-08-02 11:47:22 · 66 阅读 · 0 评论 -
数组中只出现一次的数字
这个我觉得我实现的办法也是比较简单的void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) { int times = -1; int num = 1; for (auto i = 0; i < data.size(); i++) { times = count(data.begin()...原创 2020-03-25 17:27:21 · 222 阅读 · 0 评论 -
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4
这个题比较简单我直接就是 排序取前 K个代码就几行vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> temp; if (input.empty()) return temp; if (k > input.size()) re...原创 2020-03-25 17:01:15 · 888 阅读 · 0 评论 -
数组中出现次数超过一半数组
这个题不难一般大家上来想到的都是 for 循环 把每个数字的次数都统计一遍然后还要for循环找到出现最多的次数然后用这个次数对比数组大小最后根据这个次数 在去找这个数字是几我一想这个实现太麻烦了 stl 为什么不用呢?直接 sort 排序count 计算每个出现的数字然后结果看代码int MoreThanHalfNum_Solution(vector<int> n...原创 2020-03-25 16:37:16 · 141 阅读 · 0 评论 -
从上往下打印二叉树
题目:打印的结果是 :A B C D E F刚才是我想的是用递归 但是递归发现不是这样需要借助个容器 装着一层的节点 一层一层的向下打印 直到这个容器为空/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NU...原创 2019-10-18 17:35:32 · 110 阅读 · 0 评论 -
二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像根节点不动,所有的左子树和右子树调个位置第一步 先把 8的左子树和右子树换位置第二步 继续递归把10的左子树右子树换位置第三步 继续递归把6的左子树右子树换位置/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNod...原创 2019-10-16 16:17:42 · 105 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)先来理解一下题目 也就是树A 完全包含树BA完全包含B 并且每个节点的值都相同解题思路:1.先遍历一遍A树找有没有B的根节点先对比A的根节点与B的根节点是否相同如找不到,在从A的左子树找有没有与B根节点相同的如找不到,在从A的右子树找有没有与B根节点相同的都没找到说明B不是A的子...原创 2019-10-16 11:27:13 · 1374 阅读 · 0 评论 -
合并两个排序的链表
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。我的思路这个题目还好,写出来了,但是方法可能是笨法我的思路是 创建一个新链表 然后这两个链表的每个节点进行对比,把小的存放进去,然后下一个节点直到两个链表都遍历完成其中有几个点要注意一下1.如果两个链表长度不等的情况比如链表A 都已经结尾了,那么直接把链表B的数据塞进去就可以了,反...原创 2019-10-15 17:59:57 · 111 阅读 · 0 评论 -
单链表反转
题目:输入一个链表,反转链表后,输出新链表的表头我之前写过一篇 单链表反转今天刷题正好遇到,巧的是还是不会做 !!!最后看了一遍才过。。。。。丢人/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution...原创 2019-10-15 16:44:54 · 268 阅读 · 0 评论 -
链表中倒数第k个节点
题目:输入一个链表,输出该链表中倒数第k个结点。我的思路:刚开始我把这个问题想简单了我想的是 直接把链表遍历一遍 把每个节点都放到 vector 中之后把vector 倒置一下 找第k个就可以之前的代码:////// 创建含5个节点元素的的链表/////// Node* head = new Node(); head = createNodeList(5);////// 打...原创 2019-10-15 15:29:08 · 138 阅读 · 0 评论 -
剑指offer 调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这个题目有很多办法,我首先想到的 也是认为最好理解的办法就是创建两个新的数组,把奇数偶数分别过滤出来存放,然后 清空掉原数组追加进去就可以class Solution {public: void reOrd...原创 2019-10-15 11:32:08 · 173 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第三题从尾到头打印链表
前言:牛客网 c++ 剑指Offer_编程题 第三题从尾到头打印链表题目:看到这个题 我想到就是把链表循环一遍 然后直接就把vector反转一下 完活 还是ok的code:class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<in...原创 2019-08-23 15:22:08 · 215 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第二题 替换空格
前言:牛客网 c++ 剑指Offer_编程题 第二题 替换空格题目:这里我一看题目 卧槽真简单循环一遍char 数组 遇到空格替换一下就okchar[i] = "%20" //卧槽不对呀 这是char 不是string那要向后面挪 挪几个也不清楚解题思路:搞一个新的char数组 存放替换后的字符串 if(char[i] == ' ') { n...原创 2019-08-23 12:10:50 · 177 阅读 · 1 评论 -
牛客网 c++ 剑指Offer_编程题 第一题二维数组中的查找
前言:牛客网 c++ 剑指Offer_编程题 第一题二维数组中的查找题目:这个应该是很简单的了,但是他肯定有简单的方法,因为他说了每一行和每一列的规律.我也没多考虑 直接遍历了一遍…如果谁有好的办法请贴出来学习一下code:class Solution {public: bool Find(int target, vector<vector<int> ...原创 2019-08-23 14:27:53 · 260 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列
前言:牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列题目:**这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个队列 queue 先进先出栈 stack 先进后出**其实就是用第一个栈 接数据 ,然后经过第二个栈把顺序颠倒一下 就实现队列的功能了codeclass Solution{public: vo...原创 2019-09-17 19:09:08 · 812 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第六题旋转数组的最小数字
前言:牛客网 c++ 剑指Offer_编程题 第六题旋转数组的最小数字题目:这个题目看我的懵逼,我以为要把数组转换一下,返回个数组呢,其实这个题目就是找出一个数组中的最小值这个没啥可以说的 就遍历素数组,假设第一个数组元素为最小值,只要遍历过程中找到比他小的值,就认为新值为最小值code:class Solution {public: int minNumberInRo...原创 2019-09-17 19:30:35 · 193 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第七题斐波那契数列
前言:牛客网 c++ 剑指Offer_编程题 第七题斐波那契数列题目:斐波那契数列的定义这个不算难 上来就想到用递归实现 但是递归的时间复杂度有点长,不合格普通方式实现 codeclass Solution {public: int Fibonacci(int n) { if(n < 0) return 0; ...原创 2019-09-17 19:56:07 · 295 阅读 · 0 评论 -
c++单链表反转 [大厂必考]
又是幻想进鹅厂的一天 ┭┮﹏┭┮这两天刷csdn 面经 看大厂都考一些题目 单链表的反转,今天我也来玩一下让这链表虐的怀疑人生了,我还以为这样的基础题很简单呢,我哭了,(连这个都不会还好意思想进鹅厂)最后鼓捣了1个多小时才写出来各位大佬可以动手试一试 嘿嘿 体验一下先上思路这个比较重要0- > 1 - > 2- > 3- > 4- > nullptr变成...原创 2019-07-27 19:52:38 · 519 阅读 · 7 评论 -
c++ 简单的二分法
假设 1,3,5,7,8,10,20,40,80,100怎么快速的找到 其中的元素二分法优点:原创 2019-08-02 18:40:30 · 7806 阅读 · 1 评论 -
牛客网 c++ 剑指Offer_编程题 第八题青蛙跳台阶
前言:牛客网 c++ 剑指Offer_编程题 第八题青蛙跳台阶题目:如果有1级台阶 只有一种跳发如果有2级台阶 那么有两种如果有3级台阶 有3种跳发 f(3) = f(2) + f(1) = 3种如果有4级台阶 有5种跳发 f(4) = f(3) + f(2) = 5种如果有n级台阶 有 f(n) = f(n-1) + f(n-2) 种这不就是斐波那契数列吗f(n) = ...原创 2019-09-20 12:00:34 · 416 阅读 · 0 评论 -
我为什么要建这个牛客网的刷题专栏?
前言我为什么要建这个牛客网的刷题专栏?原因就是 各种大厂比如BTA 他们面试就考这些东西,就考基础然而这些题,你就是5年的老码农 你不刷这些题,任凭你项目经验丰富做起来也头疼虽然这个专栏没人看,谁去看这种文章,我当做笔记了,慢慢积累吧加油 码农们 祝福你们早日拿到 B T A offer!...原创 2019-10-11 15:55:06 · 329 阅读 · 0 评论 -
牛客网 剑指offer_编程题矩形覆盖
前言:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?我大体画了一下图,找了一下规律一样还是递归 斐波那契数列class Solution {public: int rectCover(int number) { if(number <= 0) retur...原创 2019-10-11 16:07:35 · 270 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第四题重建二叉树
前言:牛客网 c++ 剑指Offer_编程题 第四题重建二叉树题目:这个题要比前3题要难点了,解题思路根据先序和中序的特性 先找根节点 找左子树和右子树,递归找先序的第一个 肯定是根节点,那么去中序里找根节点的位置,前面的都是左子树,后面的就是右子树对二叉树3种遍历序列不清楚的可以看我这篇code:/** * Definition for binary tree * str...原创 2019-08-23 16:23:20 · 224 阅读 · 0 评论