首页 > 其他分享 >hashtable-part02

hashtable-part02

时间:2023-08-26 10:34:13浏览次数:35  
标签:return nums res sum part02 while hashtable type

454 - 四数相加

相关题解参考:https://leetcode.cn/problems/4sum-ii/solutions/65894/chao-ji-rong-yi-li-jie-de-fang-fa-si-shu-xiang-jia/

一开始看是一点思路都没有,又是看了别人的巧妙题解,又是怀疑我是否和大佬一个物种的一天。

sum分为两组,hashmap 存两个数组的和,AB; 然后计算剩余两个数组的和,CD。 

在求出 sum_ab 之后,将sum_ab 作为 dict 的key, 出现的次数作为dict 的value. 计算c, d中任意两数之和的相反数sum_cd.

在dict中查找是否有存在key 为 sum_cd 的,并返回出现次数。

class Solution(object):
    def fourSumCount(self, nums1, nums2, nums3, nums4):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :type nums3: List[int]
        :type nums4: List[int]
        :rtype: int
        """
        d = {} 
        for i in nums1 :
            for j in nums2:
                if i+j in d :
                    d[i+j] += 1 
                else: 
                    d[i+j] = 1 
            
        count = 0 
        for k in nums3 :
            for l in nums4:
                if -k-l in d:
                    count += d[-k-l]
        return count 

383

def canConstruct(self, ransomNote, magazine):
        """
        :type ransomNote: str
        :type magazine: str
        :rtype: bool
        """
        d = {} 
        for i in magazine:
            if i in d: 
                d[i] += 1 
            else:
                d[i] = 1 
        
        for i in ransomNote: 
            value = d.get(i)
            if not value :
                return False
            else:
                d[i] -= 1
        
        return True

15 

https://leetcode.cn/problems/3sum/solutions/11525/3sumpai-xu-shuang-zhi-zhen-yi-dong-by-jyd/

学不了一点,真的想不出来。。。。。。。

 

def threeSum(nums) :
    n = len(nums) 
    res=[] 
    if(not nums or n < 3) :
        return res 

    nums.sort() 
    for i in range(n) :
        if (nums[i] > 0) :
            return res 

        if (i>0 and nums[i]==[nums[i-1]]) :
            continue 
        L = i+1 
        R = n-1 
        while(L < R) :
            s = nums[i] + nums[L] + nums[R] 
            if s < 0 : 
                L += 1 
                while L < R and nums[L] == nums[L-1] :
                    L += 1 
            elif s > 0 :
                R -= 1 
                while L < R and nums[R] == nums[R + 1] :
                    R -= 1 
            else : 
                res.append([nums[i], nums[L], nums[R]]) 
                L += 1 
                R -= 1 
                while i < j and nums[i] == nums[i - 1]: i += 1
                while i < j and nums[j] == nums[j + 1]: j -= 1
    return res

 

标签:return,nums,res,sum,part02,while,hashtable,type
From: https://www.cnblogs.com/yuhao0451/p/17658444.html

相关文章

  • day15 - 二叉树 part02
    102. 二叉树的层序遍历详解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullp......
  • Vue学习笔记:Pinia Part02 Store
    在Pinia中有option和setup两种写法OptionStore与Vue的选项式API类似,我们也可以传入一个带有 state、actions 与 getters 属性的Option对象exportconstuseCounterStore=defineStore('counter',{state:()=>({count:0}),getters:{double:(state)......
  • [代码随想录]Day22-回溯算法part02
    题目:216.组合总和III思路:多加一个记录和的参数,还有一个起始位置的参数(不重复就得加)结束条件是个数到了k:如果此时sum==n那就说明答案正确如果此时sum!=n那就直接返回剪枝的话:如果之后的和大于n那就没必要继续遍历了代码:varres[][]int//答案varpath[]int......
  • day07 - 哈希表part02
    454. 四数相加II讲解classSolution{public:intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,vector<int>&nums4){//mapunordered_map<int,int>map_two;i......
  • day04 - 链表part02
     24. 两两交换链表中的节点/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode......
  • [代码随想录]Day13-二叉树part02
    题目:102.二叉树的层序遍历思路:先把根放进去,然后每次都是左右就可以了。记录一个深度,当len(res)==deepth的时候就说明这个深度还没有实例化,先搞一个再去收集。代码:/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeN......
  • [代码随想录]Day10-栈与队列part02
    题目:20.有效的括号思路:很简单的一个栈的题目:如果是左括号就存如果是右括号就和栈顶的匹配匹配失败就返回false匹配成功就删除栈顶元素如果结束后是空就说明匹配完成这里需要注意的一个点是可以用map来代替过多的ifelse,希望能学会!代码:varpairs=map[byte]byte{......
  • PHPHashtable 如何优化数组查找和排序
    PHPHashtable如何优化数组查找和排序PHP是一种高度流行的编程语言,被广泛用于web开发。它有很多的优点,例如易于学习、跨平台、简单易用的语法等等。而在PHP中,数组是一种非常常用的数据结构,它可以存储一组有序的数据,方便我们进行各种操作。PHPHashtable如何优化数组查找和排......
  • [代码随想录]Day04-链表part02
    题目:24.两两交换链表中的节点思路:首先给他加一个虚拟头结点,然后思考反转的逻辑,这是每两个为一组,比如1,2是一组、3,4是一组,如果说1,2一组2,3一组就变成了链表的逆转了。那么指针的逻辑是:两个指针一个r指向要交换的二元组的第一个节点一个l指向前一个节点二元组的第二个节......
  • Java面试题 P12:HashMap和HashTable的区别?底层是怎么实现的?
    区别:1、HashMap:是线程不安全的,HashTable:每个方法都加了个线程锁(synchronized修饰),是线程安全的2、HashMap允许key和value为null,而HashTable不允许 底层实现:数据+链表实现  代码示例: 1publicstaticvoidmain(String[]args)2{3//HashMap......