![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
梦醒时分丶
这个作者很懒,什么都没留下…
展开
-
c++ 双指针法实现三个数的和
谁让我菜呢,第一反应就是要暴力解,三次循环,但是会遇到一个问题,因为需要去除输出中的重复项。看了大神的解答,才了解了双指针的方法,但是对重复项的去除,还是一个需要详细思考的问题。这道题其实对我最大的启发,应该是排序的使用吧,因为之前也考虑过用双指针,但是如果没有排序的话,没办法提升效率。class Solution {public: vector<vector<in...原创 2020-04-20 19:53:49 · 368 阅读 · 0 评论 -
c++ 使用双指针求矩形柱最大面积(盛水容器问题)
刚看到这道题的时候 第一反应使用两个循环,来求最大面积,但是考虑到复杂度的问题,就看了看解析,解析提出了一种双指针的思想。双指针分别代表容器的边界,将指针双边的值进行比较,将较小一方的指针,向内移动。其实简单来解释,就是因为如果想让面积最大,那么最好的情况是底和高都是最大的,但是如果底是在不断减小,那我们只能去控制容器两边的高,既然这样,那么我们就应该放弃较小的边。class Sol...原创 2020-04-19 11:48:51 · 432 阅读 · 0 评论 -
c++ 使用滑动窗口求无重复字符串最长子串
这道题我最开始的思路是用暴力法,直接使用两次循环来进行,计算后看了大神的解答,使用了滑动窗口。其实滑动窗口和暴力法的区别是滑动窗口比较的是窗口内的元素是否重复,来确定最大长度。class Solution {public: int lengthOfLongestSubstring(string s) { set<char>cont; ...原创 2020-04-15 10:22:45 · 286 阅读 · 0 评论 -
c++ 用栈实现两数相加
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*...原创 2020-04-14 10:52:30 · 428 阅读 · 0 评论 -
c++ 逆序输入两数相加
最开始自己的想法是在末尾补充0,然后进行每一位的相加,之后看了大神的代码,换了一种想法给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -...原创 2020-04-13 19:24:50 · 704 阅读 · 0 评论 -
棋盘覆盖问题C语言实现
#include <iostream>#include <stdio.h>using namespace std;int def[101][101]={0};static int t=0;void chess(int a,int b,int aa,int bb,int length){ if(length==1){ retur...原创 2018-11-15 16:16:00 · 8600 阅读 · 0 评论 -
递归分治策略排序C语言实现
#include <iostream>#include <stdio.h>using namespace std;#include<stdio.h>#include<string.h>void quickSort(int a[], int i, int j) { if(i<j) { int l=i,...原创 2018-11-15 16:23:20 · 474 阅读 · 0 评论 -
递归分治策略求最大C语言实现
#include<stdio.h>#include<iostream>#include<stdlib.h>using namespace std;int arr[10];void getMax_Min(int left,int right,int &maxNum,int &minNum){ if(left==right){ ...原创 2018-11-15 16:41:34 · 381 阅读 · 0 评论