- 博客(7)
- 收藏
- 关注
原创 合并俩个有序链表
/** *Definitionforsingly-linkedlist. *structListNode{ *intval; *ListNode*next; *ListNode():val(0),next(nullptr){} *ListNode(intx):val(x),next(nullptr){} *ListNode(intx,ListNode*next):val(x),nex...
2022-03-05 23:55:27
499
原创 有效的数独
根据题目,我们可以创造俩个二维数组与一个三维数组,分别存放每行,每列,以及每个小九宫格1~9出现的次数 rows[9][9]-------表示一个二维数组,第一个存放下标i(表示第i行),第二个存放index(记录0~9出现的次数) 以rows[9][9]为例: index 0 1 2 3 4 5 6 7 8 9 i=1 0 0 1 0 1 0 1 0 0 0 classSolution{ public: boolisValidSudoku(vector<...
2022-03-02 21:52:16
139
原创 杨辉三角浅解
1。 classSolution{ public: vector<vector<int>>generate(intnumRows){ vector<vector<int>>tangle; vector<int>a; a.push_back(1); tangle.push_back(a); if(numRows==1){ ...
2022-03-01 21:20:27
80
原创 重塑矩阵的方法
将m*n的矩阵转换成r*c的矩阵:所以他们之间元素个数必定相等,即m*n=r*c; 可以将这俩个二维数组想象为一个元素等长的一维数组,从一位数组中每次取n个就组成了二维数组m*n;每次取c个就组成了二维数组r*c;所以两个数组的元素下标将会有如下关系; 用mat1即为m*n数组;mat2为r*c; mat2[i][j]=mat1[((i*c+j)/n)][((i*c+j)%n)]; 故重塑完成! classSolution{ public: vector<vector&l...
2022-02-28 19:15:27
208
原创 买股票的时期
1. 看这个价格数组prices[],设置两个指针,ind1,ind2,ind1在始终ind2的前面;如果p[1](prices[ind1])>p[2],ind1=ind2,ind2=ind1+1(出售价比买进价高肯定亏); int prices[] = { 7,4,6,8,2,9 }; int n = 6; int ind1 = 0; int ind2 = ind1 + 1; int temp = 0;//temp表示利润,开始为0; while (i...
2022-02-26 19:44:54
170
原创 最大连续子数组和
1.动态规划; 我们不妨设f(i)为以i元素结尾的连续最大子数组和,那么当我们求出i~n-1的f(i)时,输出f(i)最大值就即为所求: f(i) = max{f(i-1)+nums[i],nums[i]};//f(i)的值是与f(i-1)与nums[i]有关的。 classSolution{ public: intmaxSubArray(vector<int>&nums){ intpre=0,maxani=n...
2022-02-23 14:21:40
597
原创 存在重复元素
使用时间复杂度为O(n)的算法 classSolution{ public: boolcontainsDuplicate(vector<int>&nums){ sort(nums.begin(),nums.end());//将数组中元素用sort()函数进行排列; intn=nums.size(); for(inti=0;i<n-1;i++){ if(nums[i]=...
2022-02-23 13:32:50
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人