首页 > 其他分享 >day6 hash表

day6 hash表

时间:2024-06-12 23:44:03浏览次数:18  
标签:剪枝 right hash day6 programmercarl https submissions left

题目:

https://leetcode.cn/problems/4sum-ii/submissions/539038029/
解析:
https://programmercarl.com/0454.四数相加II.html#算法公开课

感觉能做出来,但是没有,这个思路是两个数为一组采用两个for循环记录和,放入map中,其中,map first为和,map second为和的数量;

第三第四个数的和为前两个数的相反数,如成立,则加和;

题目:

https://leetcode.cn/problems/ransom-note/submissions/539042243/
解析:
https://programmercarl.com/0383.赎金信.html

这道题采用与“有效的字母异位词”相似的解法,在最后判断时

  for(int i = 0; i < 26; i++) {
            // std::cout << record[i] << std::endl;
            if(record[i] < 0) {
                return false;
            }
        }
// 采用的是<0而不是!=0

真是不容易,第一次做出来;

题目:

https://leetcode.cn/problems/3sum/submissions/539046563/
解析:
https://programmercarl.com/0015.三数之和.html#算法公开课

这种题,包括下面的四数之和不是我现在能做出来的;
直接看的解析,这里记录一下感受,希望对下次解有帮助。动力源为遍历的i,其余两个指针left,right随着i变化而变化。
这道题框架还很好理解,真正的灵魂是剪枝和去重,剪枝也还好;去重有两个需要注意的地方,i的去重是和前面的比,而不是和后面的比,为啥呢;
因为前面的已经处理过了,不会遗漏。再一个后面采用while去重时一定要有边界条件(right > left)

 while(right > left && nums[right] == nums[right - 1]) right--;
 while(right >left && nums[left] == nums[left + 1]) left++;

没有边界条件的话,直接报vector处理有问题,应该是跑出边界了。
这道题得多复习一下。

题目:
https://leetcode.cn/problems/4sum/submissions/539051337/
解析:
https://programmercarl.com/0018.四数之和.html
框架与第三题一致,其中k也需要去重和剪枝,这道题也是磕磕绊绊地抄了半天才能编译通过,我感悟还不深,只知道这里不是0,是target,要判断其正负;
i的去重和剪枝是和k当成一个整体来判断。
感觉我需要把三数之和写熟练了再来补这里的感悟。

标签:剪枝,right,hash,day6,programmercarl,https,submissions,left
From: https://www.cnblogs.com/zhangenigma/p/18244957

相关文章

  • c++哈希表hash_table的深度学习(hash_map,un和hash_set的底层实现)
    什么是哈希表?哈希表(HashTable)是一种数据结构,它使用哈希函数将键(key)映射到桶(bucket)或槽(slot)中,可以直接通过相应的键值直接对数据进行访问,高效的插入,删除,查找 哈希表的组成部分和特性哈希函数:哈希函数接受一个键作为输入,并返回一个索引值(通常是一个整数),该索引值用于确定键......
  • 创建entity模板,equals hashcode 方法模板
    创建entity模板,equalshashcode方法模板如下为FLINK官网实体类demoequalshashcode方法模板可以参考////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packageorg.apache.flink.walkthrough.common.entity;im......
  • 前端面试题日常练-day63 【面试题】
    题目希望这些选择题能够帮助您进行前端面试的准备,答案在文末1.TypeScript中,以下哪个关键字用于声明一个类的构造函数?a)constructorb)initc)created)initialize2.在TypeScript中,以下哪个符号用于声明可选的函数参数?a)?b)!c)*d)~3.TypeScript中的命名......
  • java面试题: HashMap、HashSet 和 HashTable 的区别
     HashMap常用方法 HashMap是一个基于哈希表的Map接口的实现。它允许使用null值和null键。 java复制//创建一个HashMapHashMap<KeyType,ValueType>map=newHashMap<>(); //添加元素map.put(key,value); //获取元素ValueTypevalue=map.get......
  • C# hashset vs list
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Management;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;us......
  • 2022.9.22DAY674
    课程学习:《模式识别》,讲了“最小均方误差算法”,从误差算法怎么来以及如何使用。 android实验课,讲了一些基本控件的使用,这些都是基础的东西,值得我去注意的是老师讲到如何通过官网文档去查看控件的属性,方法。以及通过文件去找到相关的开源代码,对于一个开发者来说,这才是值得去......
  • lightdb hash index的性能和限制
    除了btree外,lightdb是支持hashindex的,但是总体来说支持的特性范围均不如btree索引,比如parallel没有btree索引智能,不支持=之外的操作,不支持bitmapindexscan,不支持哈希唯一索引(但可以通过uniquenotnull约束变量实现)等等,但在内存存储不使用固定长度的场景下还是很有优势的。......
  • C++数据结构之:哈希表Hash
    摘要:  it人员无论是使用哪种高级语言开发东东,想要更高效有层次的开发程序的话都躲不开三件套:数据结构,算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储......
  • FFT&hash
    1.FFT常看常新啊,比如突然发现complex比手写快!注意实部和虚部的函数分别是real()和imag()#include<bits/stdc++.h>usingnamespacestd;#definerep(i,j,k)for(inti=(j);i<=(k);++i)#definedow(i,j,k)for(inti=(j);i>=(k);--i)#defineprpair#definepbpush_back#d......
  • 【图解】HashMap1.7 头插法造成死循环
    1.概述HashMap1.7当中,扩容的时候,采用的是头插法转移结点,在多线程并发的情况下会造成链表死循环的问题。HashMap1.8中改为了尾插法,解决扩容时线程并发产生的死循环问题。2.图解假设有两个线程,线程1和线程2,两个线程进行hashMap的put操作,触发了扩容。下面是扩容的时候结点转移的......