- 博客(155)
- 收藏
- 关注
原创 【LeetCode刷题】-C++-简单-198-打家劫舍
Task:思路:【解法一:遍历,奇偶分别求和】思路参考:首先这个题目,要明白的就是,偷了一间房子,那么与之直接相连接的房子是不能再去偷了,不然就要被抓住完蛋了!那么就要隔间偷,所以首先想到的就是分为奇偶数进行,但是这样有一个问题:我们的目标是要偷到的金额最大,那么只偷奇数或者只偷偶数就不能保证是最大的:因为可能有一段是奇数家的钱多,有一段是偶数家的qia多,所以需要找准一个时机。当...
2019-06-21 09:45:39
768
原创 【LeetCode刷题】-C++-简单-69-x的平方根
Task:思路:【方法1】内置函数:当然本题的初衷当然不是让这样做了,但是也要知道有一个内置函数可以用!代码:class Solution {public: int mySqrt(int x) { return sqrt(x); }};【方法2】二分查找:思路就是:(1)初始化边界i和j(2)找到中点mid= (i+j) / 2(3)re...
2019-06-20 10:58:07
278
原创 【LeetCode刷题】-C++-简单-58-最后一个单词的长度
Task思路:题目让返回最后一个单词的长度,那么首先想到的就是能不能倒着遍历,遇到了倒数第一个单词后面的那个空格就停止,然后返回前面的单词的长度!但是也有一些问题,比如最后一个单词后面并不就是结束,也有可能还是个空格,如果遇到这个空格就停下来的话,那就错误了,因此得设置flag来规避这种情况:代码:class Solution {public: int lengthOfLas...
2019-06-19 10:20:42
356
原创 【LeetCode刷题】-C++-简单-53-最大子序和
Task:解决方案:【1】暴力循环:思路:两层循环,第一层控制总的进度,第二层负责加并且验证;每当第一层循环给定一个起点,第二层循环就会从这个起点开始往后遍历加(先加一个,再加两个等等), 每次加完都会把新得到的sum的值和当前的最大值res_max进行比较,一直到把最大的sum赋给res_max才停止,否则就一直遍历寻找!时间复杂度:O(n2)代码:class Solution...
2019-06-19 09:54:31
360
原创 【Neural Networks and Deep Learning2019吴恩达最新Coursera课程学习】——第三周—Shallow neural networks
Shallow Neural Networks1. Neural Networks Overview——2019-06-17
2019-06-17 19:53:58
360
原创 【LeetCode刷题】-C++-简单-38-报数
Task:思路:首先自己刚拿到这个题的时候真的是一脸蒙蔽,都不知道要干什么,但是仔细读题之后,发现读懂题才是这道题的关键所在。看了几个示例,发现其实就是给定一个n,然后输出就是把n-1的那个数给报出来,这就是所谓的报数,也没啥难的,比如:1;11;21;1211这三个例子,当n=1的时候,其实就是特殊情况;后面的就是通用的了。当n=2的时候,返回的是11,意思就是:上一个(...
2019-06-17 09:48:29
408
1
原创 【LeetCodes刷题】-C++-简单-35-搜索插入位置
Task:思路:(一) 遍历的方法:(1)首先要进行的还是边界检查,如果给的target比nums[0]还要小,那么就包含在遍历的情况之中,如果比nums[nums.size()-1]还大,那就要单独考虑一下;(2)遍历的过程就是判断和选择的过程,如果当前的nums[i]的值大于等于target的话:a)如果大于的话,就说明target就应该插在这个nums[i]的前面,反过来想就是把...
2019-06-16 10:54:25
281
原创 【LeetCode刷题】-C++-简单-21合并两个有序链表
Task:思路:这里用到了递归的思路:(1)首先还是边界检查:看看两个链表是不是空的,如果其中一个是空的,那就直接返回另外一个有序链表就好了!(2)如果非空的话,那就正常进行:比大小如果L1的value小于L2的,那么就递归的把L2和L1的下一个值进行比较一直进行下去如果L1的value大于L2的,那么就递归的把,L1和L2的下一个value进行比较再一直比较递归下去!代码:...
2019-06-15 17:12:04
459
3
原创 【LeetCode刷题】-C++-简单-20-有效的括号
Task:思路(1)首先还是边界检查,如果是给的空的字符串,那就直接给设定为有效字符串,返回true;(2)然后看看这个字符串能不能被2整除,如果不能被2整除,那就肯定不是有效括号;(3)排除了边界就要来到我们的算法的部分:a) 利用栈,遍历给定的字符串string s;b) 遇到左括号就压栈;c) 遇到右括号首先对这个时候栈是否为空(如果不为空则继续)d) 这个时候指定当前括号...
2019-06-15 16:26:21
575
原创 【LeetCode刷题】-C++-简单-罗马数字转整数
Task:思路:首先最需要注意的就是把题目读懂,弄懂规则,这里最重要的就是下面的两个信息:可以看到需要特殊处理的就是I X 和 C 三个字符,他们分别在自己后面的两个数的左边和右边代表着不同的意思,就拿I和V来说,如果I在V的左边那就是要用V减去I,如果I在V的右边,那就直接是V加上I,剩下的也是一样的规律所以,我们需要注意!过度到算法:上面列出了基本的规则,下面...
2019-06-14 16:44:23
457
原创 【LeetCode刷题】- C++-简单-9回文数
Task:思路:边界检查:看题目,首先是边界检测:从例子以及题目要求看出:1.复数是不行的;2.末尾是0的但是这个数字又不是0的数字是不行的(因为末尾是零的回文数字只有它自己!)所以排除,是上面这两样的就直接返回false!算法:既然有了上面的建设而且昨天刷了整数翻转的题目,那就考虑把给定的数的一半给反过来,如果这个反过来的一半的数字和留下来的另外一半相当,那就是回文数字...
2019-06-14 11:32:00
462
原创 【LeetCode刷题】-C++-简单-7-整数反转
Task:思路:主要是处理溢出,就是时时刻刻我们新的反转后的数组num要在[-2的31次方, 2的31次方- 1]这个区间之中,多以每次都要进行溢出的判断,如果溢出就返回0,没有溢出那就继续操作来翻转整数!代码:class Solution {public: int reverse(int x) { int num = 0; while(x){ ...
2019-06-13 16:03:11
238
原创 【LeetCode简单题】-两数之和
Task:思路:暴力算法:时间复杂度是O(n2)(1)遍历整个数组找到nums[i](2)从nums[i]之后的元素开始遍历,得到nums[j](3)判断nums[i]和nums[j]的值是不是相等,如果是的话返回两个下标Hash Map的解题思路:(1)建立存放结果的向量result;(2)构建一个一一对应的map,都是int类型(3)遍历数组a)记录每一个...
2019-06-13 09:45:07
241
原创 【C++牛客网刷题】-重建二叉树!
Task思路:解这个题之前我是根本不知道树的,所以必须先要了解什么事前序遍历和中序遍历:前序遍历:有左走左,无左走右,都无后退中序遍历:只认准左孩子的左孩子…万不得已才后退,后退后也是上一个节点的右孩子,这样类推!有了这个基础字后,就可以重建二叉树了!后面的还是需要对树有一个深入的理解,要结合剑指Offer来思考和复习!这样 快速一些!代码/** * Definition f...
2019-06-12 20:57:58
665
4
原创 【LeetCode刷题】-岛屿数量
Task:思路:1.首先判断给定的二维数组是不是空的;2.对二维数组遍历一下,对每个元素进行判断,a)如果这个值等于1, 那么就把计数器+1, 并且对该元素四周进行深度搜索,3.返回代码:class Solution {public: int numIslands(vector<vector<char>>& grid) { ...
2019-06-12 10:37:57
894
原创 【Neural Networks and Deep Learning2019吴恩达最新Coursera课程学习】——第二周—Neural Networks Basics
Neural Networks Basics(神经网络的基础知识)这一周的学习内容主要就是围绕神经网络基础以及Python以及向量化操作进行的所以这一周过后我自己就应该获得扎实的神经网络的基础以及基本的Python编程能力!...
2019-06-11 21:17:47
558
1
原创 【LeetCode刷题】- 设计循环队列
Task:思路:完全没有思路,相当于学习了,抄几道题代码:class MyCircularQueue {private: vector<int> a; int max; public: /** Initialize your data structure here. Set the size of the queue to be k. */...
2019-06-05 09:29:23
1367
原创 【SLAM十四讲学习】——Chapter1-预备知识
一、课后习题:记录一下个人觉得值得记录的东西,重新拾起,加油!线性方程Ax=b , 若已知A,b, 需要求解x, 该如何求解? 对A和b有什么要求?高斯分布?一维什么样子?高纬什么样子?C++ 中的类?STL? 使用过吗?C++程序如何书写?C++11标准?——————————————————————————————————————————————【1解答】:1.线性方程组A...
2019-06-04 16:24:45
335
原创 【LeetCode刷题】- 移动零
Task:思路遍历一次数组,将数组中非零元素与此时数组中第一个零元素交换位置。代码:class Solution {public: void moveZeroes(vector<int>& nums) { int k = 0; for( int i = 0; i < nums.size(); i++){ ...
2019-06-04 09:09:03
278
原创 【Neural Networks and Deep Learning2019吴恩达最新Coursera课程学习】——第一周—Introduction to deep learning
绪论部分该系列课程我将学到:所以可以看出这个课程第一部分,也就是我现在学习的部分是整体的一个基础,偏向于机器学习;课程第二部分,讲授一些超参数的的调整和正则化以及优化等知识,所以算是在第一部分上更深入的一个介绍;课程第三部分,经过前两部分的学习,基本具备了良好的基础,现在就可以应用到自己的项目或者感兴趣的地方,去崭露头角课程第四部分,CNN,是我目前在用的,但是我根本还不怎么了解,...
2019-06-03 19:47:02
567
2
原创 【LeetCode刷题】-翻转字符串的单词III
Task:思路:字符串这里我不太行代码:class Solution {public: string reverseWords(string s) { int n=s.length(); vector<int> temp; for(int i=0;i<n;i++) { ...
2019-06-03 10:49:36
230
原创 【LeetCode刷题】-杨辉三角2(输出第K行)
Task:思路:这个还是不太清楚,二刷的时候好好看!代码:class Solution {public: vector<int> getRow(int rowIndex) { rowIndex++; if(rowIndex<=0){ return {}; } else if...
2019-06-03 10:36:06
465
原创 【LeetCode刷题】- 长度最小的子数组
Task思路:一个一个过,每增加一个计算一次综合sum,(1)如果计算出来的sum小于目标的值,那么就继续走;(2)如果计算出来sum的值>= 目标值,那么就记录一次此时的长度,保存在minlen中,然后把左端点+1,并且把前一个点的值减掉,然后(3)继续判断此时的和是否和目标值一样吗,如果小于的话退出while,开始for,如果还是大于或者等于,就继续把左端点右移一位,并且减去...
2019-06-03 09:44:28
304
原创 【LeetCode刷题】- 最大连续1的个数
Task:思路:(1)设置两个计数变量res 和count,前者记录到目前为止的1的个数,后者记录每个新的连续的有1的个数;(2)遍历:a) 如果等于1,那就给count+1;b) 如果不等于1,那就把count置为零,从新开始下一轮的开始;c) 然后把当前count的1的个数和res的比一下大小,把大的留下来(3) 最后返回结果代码:class Solution {pub...
2019-05-31 11:08:06
404
原创 【LeetCode刷头】 -移除元素
Task:思路:遍历一遍数组,只要遇到和val值不相等的元素,就依次复制到数组的每一位,当遍历完成也就把任务完成了!代码:class Solution {public: int removeElement(vector<int>& nums, int val) { int res = 0; for (int i = 0; i ...
2019-05-31 09:10:31
213
原创 【LeetCode刷题】-两数之和 II - 输入有序数组
Task:思路:比较暴力的方法:两次循环:代码:方法一:暴力算法class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { vector<int> vRet; for(int i=0; i < nu...
2019-05-29 23:56:10
271
原创 【LeetCode刷题】-数组拆分I
Task:思路:要满足条件:(1)一对里面取最小;(2)总体里面取最大;所以(2)是首要考虑的,那么一对取最小就不能损失太多,那么怎么样的损失才不算太多呢?那就是连续的取最小才不会损失太多,所以其实就是排序后求奇数和!代码:class Solution {public: int arrayPairSum(vector<int>& nums) { ...
2019-05-28 08:50:50
277
原创 【C++牛客网刷题】-03从尾到头打印链表
Task:思路:每次扫描一个节点,如果当前Head的指针不为空,那么就把这个指针的值查到vector的最前面(这里用了,库函数)同时,接着进行,一直到head的下一个地址为空为止,把head下一个指针的值放在vector的最前面,从而就实现了从尾到头的打印出了链表!代码:class Solution {public: vector<int> printListFro...
2019-05-27 15:13:28
293
原创 【c++牛客网刷题】- 02替换空格
任务:思路:(1)首先说明,从正向插入的话,遍历一遍,将长度为1的空格替换为长度为3的%20, 字符串的长度会变长,所以题目允许我们开辟新的数组来进行存放替换后的字符串的话,那是肯定没得问题的,而且问题也就变得很简单:Step1:设置两个指针分别指向新旧字符串的首元素;Step2:遍历原字符串,如果遇到空格,就在新字符串相应位置填入%20;Step3:如果没有遇到空格,就把原字符串上的...
2019-05-25 22:21:29
317
原创 【C++牛客网刷题】--01二维数组的查找
Task:思路:对于一个二维且顺序是排列好的数组,给定了目标输入Target(1)把这个数字和二维数组最右上角的那个数,记为m0,比较,如果Target > m0;那么说明目标数肯定不在当前行,那么当前行就不找了,二维数组第一行就不要了,从下一行再开始++i;如果Target < m0;那么说明目标数肯定不在当前列,这里是最后一列,所以整个二维数组的这一列就不要了,再冲前一...
2019-05-24 23:26:13
282
原创 【LeetCode刷题】
Task:思路:亦或的思路;代码:class Solution {public: void reverseString(vector<char>& s) { for(int i = 0; i < s.size()/2; ++i){ s[i] ^= s[s.size()-1-i]; s[s....
2019-05-24 22:05:23
200
原创 【LeetCode刷题】-最长公共前缀
Task:思路:遍历,逐行扫描!代码:class Solution {public: string longestCommonPrefix(vector<string>& strs) { if(strs.empty()) return ""; for(int i=0;i<strs[0].size();++i){ ...
2019-05-24 10:08:11
298
原创 【LeetCode刷题】- 实现strStr()
Task:代码:class Solution {public: int strStr(string haystack, string needle) { if(needle.size() == 0) return 0; for(int i = 0; i < haystack.size(); i++){ ...
2019-05-22 09:16:09
211
原创 【LeetCode刷题】- 二进制求和
题目:思路:用了两个指针分别指向a和b的末尾,然后每次取出一个字符,转为数字,若无法取出字符则按0处理,然后定义进位carry,初始化为0,将三者加起来,对2取余即为当前位的数字,对2取商即为当前进位的值,记得最后还要判断下carry,如果为1的话,要在结果最前面加上一个1代码:class Solution {public: string addBinary(string a,...
2019-05-21 09:25:16
306
原创 【LeetCode刷题】-杨辉三角
任务:思路:向量二维数组的表示,vector<vector> array; 然后对每一行rows进行处理,很容易观察出这样的表达式: rows[j]=(array[i-1][j-1]+array[i-1][j]); 处理完以后需要在末尾放入一。代码:class Solution {public: vector<vector<int>> g...
2019-05-20 08:57:34
258
原创 【LeetCode刷题】-螺旋矩阵
Task:思路:设置四个边界,然后走一圈代码:class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int>re; if(matrix.empty() || matrix[0...
2019-05-19 09:21:17
348
原创 【LeetCode刷题】-对角线遍历
题目:分析:这道题给了我们一个mxn大小的数组,让我们进行对角线遍历,先向右上,然后左下,再右上,以此类推直至遍历完整个数组,题目中的例子和图示也能很好的帮我们理解。由于移动的方向不再是水平或竖直方向,而是对角线方向,那么每移动一次,横纵坐标都要变化,向右上移动的话要坐标加上[-1, 1],向左下移动的话要坐标加上[1, -1],那么难点在于我们如何处理越界情况,越界后遍历的方向怎么变换。向...
2019-05-18 10:11:16
1372
1
原创 【LeetCode刷题】-加一
Task思路:思路就是从最低位循环开始向前检查当前位是否小于9,如果小于9就直接令当前位加1,返回数组即可,如果等于9就令当前位为0继续向前检查直到到达最高位为止,如果循环结束还没有返回值则说明此时数组里全是9,此时我们就返回一个最高位为1其余全为0且位数比原数多1位的数组即可代码:class Solution {public: vector<int> plusOn...
2019-05-17 09:42:13
209
原创 【LeetCode刷题】-至少是其他数字两倍的最大数
题目代码class Solution {public: int dominantIndex(vector<int>& nums) { int index = 0; int maxNum = nums[0]; int secondMaxNum = 0; for (int i = 1; i < n...
2019-05-16 09:12:14
250
原创 【LeetCode刷题】- 寻找数组的中心索引
题目:代码class Solution {public: int pivotIndex(vector<int>& nums) { int len = nums.size(); int right = 0; int left = 0; for (int i : nums){ r...
2019-05-15 09:01:14
425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅