随笔分类 - leetcode
摘要:仅供自己学习 思路: 直接定义每个类型的车的park数的变量,每次创建一个对象就载入值,每加入一辆车就减少一个park数即可 代码: 1 class ParkingSystem { 2 private: 3 int pb=0; 4 int pm=0; 5 int ps=0; 6 public: 7 
        阅读全文
                
摘要:仅供自己学习 思路: 通过每次n和1相与获得最低位,然后将其左移到31-i位,在将n右移一位更新最低为,这样就能翻转过来了。 代码: 1 class Solution { 2 public: 3 uint32_t reverseBits(uint32_t n) { 4 uint32_t rev=0;
        阅读全文
                
摘要:仅供自己学习 思路: 这里先使用的是递归的方法,首先是反转整个的链表,在判断已经递归到最后一个元素后,将该元素作为新的头节点,返回该元素,我们在倒数第二个元素,现在将这个元素的next的next指向该元素,再将该元素的next指向NULL,然后再次返回头节点,再次进行。 例如1->2->3->4,我
        阅读全文
                
摘要:仅供自己学习 思路:用DFS递归即可,每次进入一个递归,就相当于下去一层,深度加1,再将深度传入即可。如果到叶子节点了,就返回深度,这个深度是左右两个子树在比较谁更深,去最深的长度作为返回的深度 代码: 1 /** 2 * Definition for a binary tree node. 3 *
        阅读全文
                
摘要:仅供自己学习 思路: 贪心,每次从该位置 i 都选择能到达的位置之中选择最大的可以跳到的位置并且如果从这个位置跳的最大位置要大于 i 这个位置能跳到位置更大,就更新能跳到的位置。即使达到i最大能跳的位置了,最大跳数还是会更新,因为跳到的地方为 i+nums[i]。我们用一个end来记录一次i位置能跳
        阅读全文
                
摘要:仅供自己学习 思路: 我们可以通过中序遍历先把每个节点存放于一个数组里,然后对于next函数,因为题目说了next一定是有效的,所以我们我们只需要返回索引在的位置的元素,并把索引加一对于hasnext函数,只需判断是否大于数组的长度即可。 代码: 1 /** 2 * Definition for a
        阅读全文
                
摘要:仅供自己学习 思路: 直接双重for遍历即可,每次用一个变量存储,然后每次取max。 1 class Solution { 2 public: 3 int maximumWealth(vector<vector<int>>& accounts) { 4 int maxaccunt=INT_MIN; 
        阅读全文
                
摘要:仅供自己学习 思路: 因为只是要相邻的花园种的花不同,那么我们对每个花园都建立一个容器存入他的相邻花园,记录这些花园所用的颜色即可。 开始根据path建立邻接链表,然后对每个花园的邻接花园进行遍历,建立一个颜色容器,循环这些邻接花园并在颜色容器去除花园所占的颜色,最后加入颜色容器剩下的第一个颜色给该
        阅读全文
                
摘要:仅供自己学习 思路: 这道题和昨天的题类似,只是上一道把所有重复的元素都删除掉,而这次留下最后一个重复元素。 这里可以想想我们是如何删除所有的重复元素的,我们将重复的元素用一个变量存储,然后从重复的第一个元素遍历后面的元素和这个变量比较,如果相等就去除,我们相当于把所有相同的元素都和这个变量比较然后
        阅读全文
                
摘要:仅供自己学习 思路: 直接迭代即可。这里需要建立一个虚拟头节点 dummy以避免对head进行过多处理和一些细节错误。还建立一个cur用来移动,一个temp用来指cur的前一个位置,用来辅助删掉所有重复的节点。 因为要删掉最后一个重复元素,但这时候他的下一个元素已经不相等了,所以我们使用一个标志来判
        阅读全文
                
摘要:仅供自己学习 思路: 以3为中心,判断1和2。 首先判断nums的长度是否大于3,否则直接返回false。我们用一个multiset,可以按照升序排序,并且可根据upper_bound找到大于传入参数的第一个元素的位置,便于遍历寻找适合2标号的元素。 首先我们用一个变量left_min存放1,然后将
        阅读全文
                
摘要:。。。。。水水算了 大写的和小写字母ASCII码差32,查表就知道了 1 class Solution { 2 public: 3 string toLowerCase(string str) { 4 int len=str.length(); 5 for(int i=0;i<len;++i){ 6
        阅读全文
                
摘要:仅供自己学习 思路:一开始自己用的multiset 做容器,全部加进去再取出k个 代码: 1 class Solution { 2 public: 3 vector<int> getLeastNumbers(vector<int>& arr, int k) { 4 multiset<int> a; 
        阅读全文
                
摘要:仅供自己学习 思路: 同样DFS递归,如果root1或者root2为NULL,就返回另一个root,否则就将root1->val和root2->val的值相加赋值给root1->val上, 再将root1->left和root2->left作为参数递归调用函数,返回的root1赋值给root1->l
        阅读全文
                
摘要:仅供自己学习 思路: 直接暴力可以解决,但时间复杂度为O(n) 通过另一种方法, 设 m为n的因子,n=m*(n/m),我们假设 :至少存在一个因子使得 其小于根号n, 反证:我们设想 m 和 n/m都大于 根号n n=m*(n/m)> 根号n*根号n=n,与我们设想矛盾,如果正确应该大于n而不是等
        阅读全文
                
摘要:仅供自己学习 思路: 这种列表嵌套列表的可以视作一个多叉树型结构,如果是单个整数就视为叶子节点,如果非叶子节点是就是非叶子节点。 扁平化嵌套列表迭代器意思是,需要设计一个迭代器,这个迭代器能把嵌套列表铺平成一个个的int,每次通过 hasNext函数来判断是否存在下一个整数,通过next返回下一个整
        阅读全文
                
摘要:仅供自己学习 思路: 开一个同样大小的矩阵,根据规律在新矩阵赋值,在复制给原矩阵。根据观察可以得到,第 i 行第 j 列反转90度,会在第 j 行倒数第 i 列。即new[ j ][col-i -1]=matrix[i][j]; 代码: 1 class Solution { 2 public: 3 
        阅读全文
                
摘要:仅供自己学习 思路: 在学二分法,想到用二分法来做,从1-num这个范围进行二分,每次判断 mid*mid是否等于num,相当于找最后一个平方和不大于num的数,如果存在则这个数的平方和就为num,不存在退出循环并返回FALSE即可,其余就是二分法的模板写法。 代码: 1 class Solutio
        阅读全文
                
摘要:j仅供自己学习 思路: 把其中一个数组存入hash表,然后直接查看另一个数组的元素是否也在hash表中,有就加入新的hash表。为什么不是vector中呢,因为这样会添加重复的相同元素进去,所以set具有除重复的特性。 代码 1 class Solution { 2 public: 3 vector
        阅读全文
                
摘要:仅供自己学习 思路: 因为之前做了滑动窗口的题,可以用来求连续子串的最大值,最小值,那么是不是可以换一个方向,因为从两侧取值不连续,但我们可以取 在中部取连续的 s-k个数,并且求最小值,再用所有数字和减去最小值即可得到从两侧取到最大的值了。其中s为一系列数的个数。 1 class Solution
        阅读全文
                

浙公网安备 33010602011771号