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 · 91 阅读 · 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 · 65 阅读 · 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 · 69 阅读 · 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 · 67 阅读 · 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 · 84 阅读 · 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 · 78 阅读 · 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 · 66 阅读 · 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 · 73 阅读 · 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 · 231 阅读 · 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 · 896 阅读 · 0 评论 -
数组中出现次数超过一半数组
这个题不难 一般大家上来想到的都是 for 循环 把每个数字的次数都统计一遍 然后还要for循环找到出现最多的次数 然后用这个次数对比数组大小 最后根据这个次数 在去找这个数字是几 我一想这个实现太麻烦了 stl 为什么不用呢? 直接 sort 排序 count 计算每个出现的数字 然后结果 看代码 int MoreThanHalfNum_Solution(vector<int> n...原创 2020-03-25 16:37:16 · 147 阅读 · 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 · 116 阅读 · 0 评论 -
二叉树的镜像
题目: 操作给定的二叉树,将其变换为源二叉树的镜像 根节点不动,所有的左子树和右子树调个位置 第一步 先把 8的左子树和右子树换位置 第二步 继续递归把10的左子树右子树换位置 第三步 继续递归把6的左子树右子树换位置 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNod...原创 2019-10-16 16:17:42 · 114 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构
题目: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 先来理解一下题目 也就是树A 完全包含树B A完全包含B 并且每个节点的值都相同 解题思路: 1.先遍历一遍A树找有没有B的根节点 先对比A的根节点与B的根节点是否相同 如找不到,在从A的左子树找有没有与B根节点相同的 如找不到,在从A的右子树找有没有与B根节点相同的 都没找到说明B不是A的子...原创 2019-10-16 11:27:13 · 1403 阅读 · 0 评论 -
合并两个排序的链表
题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 我的思路 这个题目还好,写出来了,但是方法可能是笨法 我的思路是 创建一个新链表 然后这两个链表的每个节点进行对比,把小的存放进去,然后下一个节点 直到两个链表都遍历完成 其中有几个点要注意一下 1.如果两个链表长度不等的情况 比如链表A 都已经结尾了,那么直接把链表B的数据塞进去就可以了,反...原创 2019-10-15 17:59:57 · 121 阅读 · 0 评论 -
单链表反转
题目: 输入一个链表,反转链表后,输出新链表的表头 我之前写过一篇 单链表反转 今天刷题正好遇到,巧的是还是不会做 !!! 最后看了一遍才过。。。。。 丢人 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution...原创 2019-10-15 16:44:54 · 273 阅读 · 0 评论 -
链表中倒数第k个节点
题目: 输入一个链表,输出该链表中倒数第k个结点。 我的思路: 刚开始我把这个问题想简单了 我想的是 直接把链表遍历一遍 把每个节点都放到 vector 中 之后把vector 倒置一下 找第k个就可以 之前的代码: ////// 创建含5个节点元素的的链表/////// Node* head = new Node(); head = createNodeList(5); ////// 打...原创 2019-10-15 15:29:08 · 150 阅读 · 0 评论 -
剑指offer 调整数组顺序使奇数位于偶数前面
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 这个题目有很多办法,我首先想到的 也是认为最好理解的办法就是 创建两个新的数组,把奇数偶数分别过滤出来存放,然后 清空掉原数组追加进去就可以 class Solution { public: void reOrd...原创 2019-10-15 11:32:08 · 177 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第三题从尾到头打印链表
前言: 牛客网 c++ 剑指Offer_编程题 第三题从尾到头打印链表 题目: 看到这个题 我想到就是把链表循环一遍 然后直接就把vector反转一下 完活 还是ok的 code: class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<in...原创 2019-08-23 15:22:08 · 223 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第二题 替换空格
前言: 牛客网 c++ 剑指Offer_编程题 第二题 替换空格 题目: 这里我一看题目 卧槽真简单 循环一遍char 数组 遇到空格替换一下就ok char[i] = "%20" //卧槽不对呀 这是char 不是string 那要向后面挪 挪几个也不清楚 解题思路: 搞一个新的char数组 存放替换后的字符串 if(char[i] == ' ') { n...原创 2019-08-23 12:10:50 · 190 阅读 · 1 评论 -
牛客网 c++ 剑指Offer_编程题 第一题二维数组中的查找
前言: 牛客网 c++ 剑指Offer_编程题 第一题二维数组中的查找 题目: 这个应该是很简单的了,但是他肯定有简单的方法,因为他说了每一行和每一列的规律.我也没多考虑 直接遍历了一遍… 如果谁有好的办法请贴出来学习一下 code: class Solution { public: bool Find(int target, vector<vector<int> ...原创 2019-08-23 14:27:53 · 273 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列
前言: 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列 题目: **这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个 队列 queue 先进先出 栈 stack 先进后出** 其实就是用第一个栈 接数据 ,然后经过第二个栈把顺序颠倒一下 就实现队列的功能了 code class Solution { public: vo...原创 2019-09-17 19:09:08 · 832 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第六题旋转数组的最小数字
前言: 牛客网 c++ 剑指Offer_编程题 第六题旋转数组的最小数字 题目: 这个题目看我的懵逼,我以为要把数组转换一下,返回个数组呢,其实这个题目就是找出一个数组中的最小值 这个没啥可以说的 就遍历素数组,假设第一个数组元素为最小值,只要遍历过程中找到比他小的值,就认为新值为最小值 code: class Solution { public: int minNumberInRo...原创 2019-09-17 19:30:35 · 205 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第七题斐波那契数列
前言: 牛客网 c++ 剑指Offer_编程题 第七题斐波那契数列 题目: 斐波那契数列的定义 这个不算难 上来就想到用递归实现 但是递归的时间复杂度有点长,不合格 普通方式实现 code class Solution { public: int Fibonacci(int n) { if(n < 0) return 0; ...原创 2019-09-17 19:56:07 · 300 阅读 · 0 评论 -
c++单链表反转 [大厂必考]
又是幻想进鹅厂的一天 ┭┮﹏┭┮ 这两天刷csdn 面经 看大厂都考一些题目 单链表的反转,今天我也来玩一下 让这链表虐的怀疑人生了,我还以为这样的基础题很简单呢,我哭了,(连这个都不会还好意思想进鹅厂) 最后鼓捣了1个多小时才写出来 各位大佬可以动手试一试 嘿嘿 体验一下 先上思路这个比较重要 0- > 1 - > 2- > 3- > 4- > nullptr 变成...原创 2019-07-27 19:52:38 · 530 阅读 · 7 评论 -
c++ 简单的二分法
假设 1,3,5,7,8,10,20,40,80,100 怎么快速的找到 其中的元素 二分法优点:原创 2019-08-02 18:40:30 · 7814 阅读 · 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 · 430 阅读 · 0 评论 -
我为什么要建这个牛客网的刷题专栏?
前言 我为什么要建这个牛客网的刷题专栏? 原因就是 各种大厂比如BTA 他们面试就考这些东西,就考基础 然而这些题,你就是5年的老码农 你不刷这些题,任凭你项目经验丰富 做起来也头疼 虽然这个专栏没人看,谁去看这种文章,我当做笔记了,慢慢积累吧 加油 码农们 祝福你们早日拿到 B T A offer! ...原创 2019-10-11 15:55:06 · 342 阅读 · 0 评论 -
牛客网 剑指offer_编程题矩形覆盖
前言: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 我大体画了一下图,找了一下规律 一样还是递归 斐波那契数列 class Solution { public: int rectCover(int number) { if(number <= 0) retur...原创 2019-10-11 16:07:35 · 282 阅读 · 0 评论 -
牛客网 c++ 剑指Offer_编程题 第四题重建二叉树
前言: 牛客网 c++ 剑指Offer_编程题 第四题重建二叉树 题目: 这个题要比前3题要难点了,解题思路根据先序和中序的特性 先找根节点 找左子树和右子树,递归找 先序的第一个 肯定是根节点,那么去中序里找根节点的位置,前面的都是左子树,后面的就是右子树 对二叉树3种遍历序列不清楚的可以看我这篇 code: /** * Definition for binary tree * str...原创 2019-08-23 16:23:20 · 231 阅读 · 0 评论