![](https://img-blog.csdnimg.cn/20201011124638767.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
力扣
在力扣遇到的有关问题,记录笔记心得体会,记录经典算法
ZALE.PPY
Talk is cheap,show me the code.
展开
-
只出现一次的数字
只出现一次的数字不使用额外的空间线性的时间复杂度,使用异或运算符⊕异或运算符的性质:a⊕0 = a;a⊕a = 0;满足交换律;cpp实现:class Solution { public: int singleNumber(vector<int>& nums) { int ret = 0; for (auto e: nums) ret ^= e; //迭代容器中的所有元素,每一个元素的临时变量就是e原创 2021-03-10 22:19:12 · 61 阅读 · 0 评论 -
数组重复元素
存在重复元素方法一: 排序排序判断相邻元素是否相等int cmp(const void*_a,const*_b) { //定义了一个可以指向任意类型的常量的指针 int a =*(int*)_a, b = *(int*)_b; return a - b;}bool containsDuplicate(int* nums, int numsSize) { qsort(nums, numsSize, sizeof(int), cmp); for (int i原创 2021-03-10 21:30:35 · 71 阅读 · 0 评论 -
Leetcode:463.岛屿的长度
Leetcode:463.岛屿的长度问题描述:给定一个包含0和1的二维网络地图,其中1表示陆地,0表示水域。网络中的格子水平和垂直方向相连(对角线方向不相连)。整个网络被水完全包围,但是其中恰好有一个(或者说,一个或者多个表示陆地的格子组成的岛屿)。岛屿中没有“湖”(湖指的是水域在岛屿内而且不和岛屿周围的水域相连)。格子是边长为1的正方形。网格为长方形,且宽度高度都不超过100.计算者个岛屿的周长。示例输入:[[0,1,0,0],[1,1,1,0],[0,1,0,0][1,1,0,0]]原创 2020-10-30 15:56:50 · 654 阅读 · 0 评论 -
LeetCode:求根到叶子节点数字之和
求根到叶子节点数字子和:题目描述:给定一个二叉树,每一个节点都存放一个0~9的数字,每条从根到叶子节点的路径都代表一个数字。题解:二叉树的每一条路径都代表一个数字,而且个节点对应一个数字,等于其父节点对应的数字乘以十再加上该节点的值,然后加上对应叶子节点的值既可以得到。广度优先算法与深度优先算法1. 深度优先算法:思路与算法:深度优先,从节点开始,遍历每一个节点,如果遇到了叶子节点,则将节点对应的数字加到数字之和。如果当前节点不是叶子节点,则计算其子节点对应的数字,然后对子节点递归遍历。int原创 2020-10-29 16:28:49 · 88 阅读 · 0 评论 -
leetcode:845.数组中的最长山脉
数值中的最长山脉问题描述:将数组A中符合下列属性的任意连续子数组B称为“山脉”:1.B.length>=32.存在0<i<B.length-1使得B[0]<B[1]<…<B[i-1]<B[i]>B[i+1]>…>B[B.length-1](注意:B可以是A的任意子数组,包括整个数组A)给出一个整数数组A,返回最长“山脉”的长度。若无则返回0示例1:输入:[2,1,4,7,3,2,5]输出:5最长的“山脉是[1,4,7,3,2]”原创 2020-10-28 21:40:40 · 92 阅读 · 0 评论 -
Leetcode:1201.独一无二的出现次数
独一无二的出现次数问题描述:给一个整数数组arr,统计数组中每个数的出现次数。若每个数的出现次数都是独一无二的,返回true;否则返回false;解决方案:使用哈希表:首先使用哈希表记下每个数字的出现次数,然后再利用新的哈希表,统计不同的出现次数的数目。如果不同的出现的次数等于不同的数字,则返回true,否则返回false。哈希表相关知识时间复杂度O(1);...原创 2020-10-28 21:34:46 · 107 阅读 · 1 评论 -
力扣:763.划分字母区间
#763.划分字母区间##问题描述:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。== 同一个字母最多出现在一个片段中==方法一:贪心算法与双指针1.从左到右遍历字符串,遍历的同时维护当下的字符串记录开始的位置和结束的位置,标记为start和end。初始时候start==end。2.对于每一个访问到的字母c,得到当前的字符串的初始末尾end,然后继续遍历,记录当前字母出现的最后一个位置end©,当前访问的字原创 2020-10-23 14:19:31 · 111 阅读 · 0 评论 -
416.分割等和子集
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集元素和相等。每个数组中的元素不会超过100数组的大小不会超过200示例1输入:[1,5,5,11]输出:数组可以分割成[1,5,5]和[11]示例2输入:[1,2,3,5]输出:false解决方案:动态规划bool canPartition(int *nums,int numsSize){ if(numsSize<2){ return false; //判断数组是否可以被划分 }原创 2020-10-11 15:32:51 · 68 阅读 · 0 评论