zoukankan      html  css  js  c++  java
  • Day 21

    第350题:

    给定两个数组,编写一个函数来计算它们的交集。来源:力扣(LeetCode)

    示例 1:

    输入: nums1 = [1,2,2,1], nums2 = [2,2]
    输出: [2,2]
    示例 2:

    输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    输出: [4,9]
    说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。

    1、求两个数组的交集,就是判断数组内有多少个相同的元素,

      直接用哈希表将长的数组内的元素和此元素个数作为key和valueput进hashmap中;

      然后遍历数组二,当里面出现一个hashmap里面有的元素,就将hashmap中这个key对应的value-1;

      所以不管有没有重复的相同元素,也可以取出来,用数组接收;

      最终返回所需结果。

      

    2、也可以先将两个数组排好序,然后用两个指针分别遍历两个数组,就可以得出两个数组的交集了。

      

    第29题:

    给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

    返回被除数 dividend 除以除数 divisor 得到的商。

    整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2来源:力扣(LeetCode)

    1、求被除数除以除数的商,不能使用乘法除法和mod运算符;

      其实就是运算被除数里面包含了count个除数,可以用单纯的一个一个减来得出结果,但是好像时间超出限制;

      对于结果的正负,可以设置一个标志位来直接判断;

      由于数值的范围为int类型,所以可以将被除数和除数都转换为负数(因为有标志位,所以不妨碍结果);

      对于被除数和除数,可以使用被除数减去2^n个除数来计算count个数,可降低运行时间;

      先求出被除数可蕴含除数的最大个数,按照二次幂个数相加;

      例如被除数时11除数是3时,3<11,所以count肯定可以=1,所以将3翻倍,count也翻倍,得到6,6也<11,所以count肯定也可以等于2;

      当此时再次翻倍时,除数变为了12,但是12>11,所以除数和count不能再增加了,所以被除数=11-6=5;

      这时候就可以将5作为被除数来和除数3再次计算余下的count个数,求处累加到上面的count,得出最终结果;

      最后以标志位来判断count的正负。

      

    第35题:

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(来自LeetCode)

    1、直接遍历数组,将插入位置找到。

      

    2、利用二分查找寻找插入位置。

      

  • 相关阅读:
    koa 放置 前台打包dist 目录
    tomcat startup.bat 包含springboot的输出 里面乱码的解决方案
    base64 转文件上传
    4时4态 加被动 例句:I will have been being done
    软件推荐 Notable / 现改用 Vnote 了
    [win10] 开始-设置 / 右键-显示设置 / 右键个性化 等都不好使了。。 ms-settings:display
    viewui tree 自定义化(源码copy出来改动)#添加 获取selected 解决方案
    idea 暂存 Stash Changes Git/Repository/Stash Changes 恢复暂存 UnStash Changes
    vm 虚拟机总是蓝屏 移除打印机和声卡 移除这俩硬件 (大文件用飞秋传输)
    docker中mysql 汉字乱码,显示问号
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13295173.html
Copyright © 2011-2022 走看看