- 博客(35)
- 收藏
- 关注
原创 Leetcode - 576 出界的路径数
class Solution {public://f[i][j][s] 代表从位置 i,j 出发,可用步数不超过 s 时的路径数量const int MOD=1e9+7;int limit,m,n; int findPaths(int _m, int _n, int N, int i, int j) { vector<vector<vector<int>>> dp(_m, vector<vector<int>>(_n
2021-04-14 18:58:52 198
原创 Leetcode - 200 岛屿数量
class Solution {public:int result=0;vector<vector<int>> visited; int numIslands(vector<vector<char>>& grid) { int rows=grid.size(),cols=grid.at(0).size(); visited.resize(rows,vector<int>(cols));
2021-04-13 16:44:03 169
原创 Leetcode - 179 最大数
class Solution {public: string largestNumber(vector<int>& nums) { auto cmp = [](const int &x, const int &y) { long sx = 10, sy = 10; while (sx <= x) { sx *= 10; }
2021-04-12 12:42:08 198
原创 Leetcode - 322 零钱兑换
记忆化搜索在这里插入代码片动态规划f[n]表示构成n所需的最少硬币数 f[0]=0 对于每个硬币 f[n]=min(f[n],f[n-coins[i]]+1);class Solution {public: int coinChange(vector<int>& coins, int amount) { if(amount<0)return -1; if(amount==0)return 0; sort(c.
2021-04-11 22:18:17 158
原创 Leetcode - 55 跳跃游戏
贪心:最远距离class Solution {public: bool canJump(vector<int>& nums) { int mm = 0;//能跳到的最远距离 for (int i = 0; i < nums.size(); i++){//遍历一遍找到每个点的最远距离 if (i > mm) return false;//最远距离小于自己的位置 mm = max(mm, i + nums[i]);.
2021-04-11 10:55:03 119
原创 Leetcode - 49 字母异位词分组
map: #include < map >unordered_map: #include < unordered_map >map内部实现:红黑树——自动排序unordered_map内部实现:哈希表,无序排列,查找的时间复杂度可达到O(1)里面的元素都是以pair类型来存贮class Solution {public: vector<vector<string>> groupAnagrams(vector<string>.
2021-04-11 10:13:30 113
原创 Leetcode - 93 复原IP地址
回溯(画图分析)class Solution {public:vector<string> result;string path; vector<string> restoreIpAddresses(string s) { int n=s.size(); if(n<4||n>12){ return result; } backtrack(s,path,0,0,n);.
2021-04-11 09:25:22 78
原创 Leetcode - 48 旋转图像
两次翻转class Solution {public: void rotate(vector<vector<int>>& matrix) { if(matrix.size()==0||matrix.size()!=matrix[0].size()){ return; } int n=matrix.size(); //先正对角线反转 for(int i=0;i.
2021-04-10 19:17:30 67
原创 Leetcode - 18 四数之和
排序+双指针class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); vector<vector<int>> result; int length = nums.size(); if(len.
2021-04-10 16:35:09 62
原创 Leetcode - 31 下一个排列
next_permutation(nums.begin(),nums.end());//STL库函数class Solution {public: void nextPermutation(vector<int>& nums) { if(nums.size()<=1){ return; } int i=nums.size()-2; //在尽可能靠右的低位进行交换,需要从后向前查找.
2021-04-10 15:57:59 67
原创 Leetcode - 剑指 Offer 64. 求1+2+…+n
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)class Solution {public: int sumNums(int n) { n && (n+=sumNums(n-1));//利用&&和||的短路特性作为条件判断语句 return n; }};两数相乘,利用加法和位运算来模拟如果B的第i位为1,那么与A相乘的贡献即为A<<.
2021-04-10 09:16:19 77
原创 算法小记(三)
//C++ 去字符串两边的空格 实现trimvoid trim(string &s){ if (s.empty()) return; s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1);}inline string& leftTrim(string &s){ string::iterator p=find_if(s.begin(),s.end()
2021-04-09 22:55:24 86
原创 算法小记(二)
Hash的应用:如果输入数据中出现了负数,我们不能直接把输入数据当做数组下标来访问数组元素,而是将每一个输入的数据都加上一个固定的偏移值,使输入数据[-500000,500000]区间被映射到数组下标[0,1000000]区间。所以无论我们在做统计还是读出统计值时,我们都需要注意这个偏移值,只有加上了这个偏移值,我们才能访问到正确的数组元素注意输入输出格式:如果在输出的每一个数字之间存在着一个空格,而在最后一个数字之后却不存在空格,我们在输出数字时应当特别注意控制空格的输出...
2021-04-09 21:09:34 87
原创 算法小记(一)
while(scanf("%d",&n)!=EOF)while(gets(字符串变量))sort(nums.begin(),nums.end(),cmp)关于cmp的定义规则:(基本类型)当cmp返回值为true时,cmp的第一个参数将会排在第二个参数前降序排序:当第一个参数比第二个参数小时返回 false升序排序:当第一个参数比第二个参数小时返回true关于cmp的定义规则:(自定义类型)自定义的结构体,类,不属于C++内置基本类型,计算机并不知道两个结构体之间如何
2021-04-08 23:13:56 149 1
原创 Leetcde - 784 字母大小写全排列
C++字母数字函数总结class Solution {public:vector<string> result;string ans; vector<string> letterCasePermutation(string S) { int n=S.size(); backtrack(S,0); return result; } void backtrack(string& S,int.
2021-04-08 13:41:39 107
原创 Leetcode - 77 组合
子集、组合与排列是不同性质的概念。子集、组合是无关顺序的,而排列是和元素顺序有关的,如 [1,2] 和 [2,1] 是同一个组合(子集),但 [1,2] 和 [2,1] 是两种不一样的排列!class Solution {public:vector<vector<int>> result;vector<int> ans; vector<vector<int>> combine(int n, int k) { .
2021-04-08 12:16:00 66
原创 Leetcode - 39/40 组合总和
经典回溯注意题目要求,逻辑分析class Solution {public:vector<vector<int>> result;vector<int> candidate; vector<vector<int>> combinationSum(vector<int>& candidates, int target) { int n=candidates.size(); .
2021-04-07 19:12:05 74
原创 Leetcode-153/154 寻找旋转排序数组中的最小值
经典二分查找class Solution {public: int findMin(vector<int>& nums) { int n=nums.size(); int ans=INT_MAX; int left=0,right=n-1; while(left<right){//让跳出循环时left和right重合 int mid=left+(right-left)/2; .
2021-04-07 15:27:49 67
原创 Leetcode - 33/81 搜索旋转排序数组
二分法注意分情况讨论class Solution {public: int search(vector<int>& nums, int target) { int n=nums.size(); if(n==0)return -1; int left=0,right=n-1; while(left<=right){ int mid=left+(right-left)/2; .
2021-04-07 13:13:55 1226 2
原创 Leetcode - 78 子集
用01序列代表子集class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { int n=nums.size(); vector<vector<int>> result; vector<int> condition; for(int mask=0;mask<(.
2021-04-06 17:49:18 67
原创 Leetcode - 80 删除有序数组中的重复项 II
双指针class Solution {public: int removeDuplicates(vector<int>& nums) { int n=nums.size(); int k=2;//保留n个相同的数 if(n<=k) return n; int j=k;//对于前 k 个数字,我们可以直接保留 for(int i=k;i<n;i++){ //与当前写.
2021-04-06 15:51:59 63
原创 Leetcode-34在排序数组中查找元素的第一个和最后一个位置
二分搜索class Solution {public: int BinarySearch_first(vector<int>& nums,int target){ int left=0,right=nums.size()-1;//要点nums.size()-1和nums.size() while(left<=right){//要点:<= 和 < int mid=left+(right-left)/2.
2021-04-05 23:39:24 84
原创 Leetcode - 21 合并两个有序链表
迭代class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* dummy = new ListNode(0); ListNode* prev=dummy; ListNode *first=l1,*second=l2; while(first&&second){ if(fir.
2021-04-05 18:25:40 89
原创 Leetcode-264 丑数
set 去除重复小顶堆是一个元素出来然后存 3 个元素class Solution {public: int nthUglyNumber(int n) { //因为int 太小容易超出范围 改用long set<long> s;//set是有序的,且互不重复 long answer=1;//初始化第一个数 for(int i=1;i<n;i++){ s.insert(answer*2).
2021-04-05 17:18:51 107
原创 Leetcode-22 括号生成
标准回溯问题这题主要是需要思路清晰:1.如果左括号数量不大于 n,我们可以放一个左括号2.如果右括号数量小于左括号的数量,我们可以放一个右括号class Solution {public: vector<string> result; vector<string> generateParenthesis(int n) { string current; backtrack(current,n,0,0); .
2021-04-05 14:23:45 68
原创 Leetcode-19 删除链表的倒数第 N 个结点
快慢指针/** * 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), nex.
2021-04-03 17:55:05 70
原创 Leetcode-17电话号码的字母组合
回溯当题目中出现所有组合的字眼时,就应该想到回溯class Solution {public: unordered_map<int,string> phoneMap{ {2, "abc"}, {3, "def"}, {4, "ghi"}, {5, "jkl"}, {6, "mno"}, {7, "pqrs"}, .
2021-04-03 15:37:56 85
原创 Leetcode-1143 最长公共子序列
动态规划动态规划的边界情况:当 i=0 或 j=0 时,dp[ i ][ j ]=0class Solution {public: int longestCommonSubsequence(string text1, string text2) { //动态规划 int n1=text1.size(); int n2=text2.size(); //初始化动态规划表,全置0 vector<vector&.
2021-04-03 12:46:28 62
原创 Leetcode-5 最长回文子串
动态规划1.确定DP数组以及下标含义2.确定递推公式(状态转移方程)3.初始化4.注意遍历顺序(状态由较短回文串向较长回文串转移)即填表时参考的值不能还未计算——先计算dp[ i + 1 ][ j - 1 ]再计算dp[ i ][ j ]class Solution {public: string longestPalindrome(string s) { int n=s.size(); //先考虑边界条件 //初始值 .
2021-04-03 11:04:13 59
原创 Leetcode-面试题17.21 直方图的水量
动态规划——用空间换时间明确思路:对于下标 i,水能到达的最大高度等于下标 i 两边的最大高度的最小值,下标 i 处能接的水的量等于下标 i 处的水能到达的最大高度减去 height[i]时间复杂度:O(n)空间复杂度:O(n)class Solution {public: int trap(vector<int>& height) { int n=height.size(); if(n==0){ return.
2021-04-03 09:52:53 96
原创 数据处理——将非高斯分布转化为高斯分布
将非高斯分布转化为高斯分布注:可用SPSS操作1.平方根变化(1)使服从Poission分布的计数资料或轻度偏态资料正态化,可用平方根变换使其正态化。(2)当各样本的方差与均数呈正相关时,可使资料达到方差齐性。2.取<1的某数次幂3.取log(1)使服从对数正态分布的数据正态化。(2)使数据达到方差齐性,特别是各样本的标准差与均数成比例或变异系数CV接近于一个常数时。4.倒...
2020-03-03 21:00:31 3954
原创 机器学习实战——学习笔记(二)
第二章——K-近邻算法算法介绍(k-Nearest Neighbor)k-近邻算法是分类数据最简单最有效的算法,k采用测量不同特征值之间的距离方法进行分类算法原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数...
2020-03-03 20:54:06 299
原创 机器学习实战——学习笔记(一)
第一章——机器学习基础数据挖掘十大算法C4.5决策树、K-均值(K-mean)、支持向量机(SVM)、Apriori、最大期望算法(EM)、PageRank算法、AdaBoost算法、k-近邻算法(kNN)、朴素贝叶斯算法(NB)和分类回归树(CART)算法本书未包含PageRank算法、最大期望算法。何为机器学习机器学习就是把无序的数据转化成有用的信息,需要多学科的专业知识,用到了统...
2020-03-03 20:52:07 1526 2
原创 大数据基础学习路线
大数据学习路线大数据的本质Java和大数据的关系学习大数据需要的基础和路线大数据的本质(1)数据的存储:分布式文件系统(分布式存储)(2)数据的计算:分布式计算Java和大数据的关系Hadoop:基于java语言开发Spark:基于Scala语言,Scala基于Java语言学习大数据需要的基础和路线java基础(javaSE) —— 类,继承,I/O,反射,泛型…Linux...
2019-09-21 21:08:00 1889
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人