首页
学习
活动
专区
圈层
工具
发布

集合的前N个元素

集合的前N个元素:编一个程序,按递增次序生成集合M的最小的N个数,M的定义如下:     (1)数1属于M;     (2)如果X属于M,则Y=2*x+1和Z=3*x+1也属于M;     (3)此外再没有别的数属于...【分析】        可以用两个队列a和b来存放新产生的数,然后通过比较大小决定是否输出,具体方法如下:        (1)令fa和fb分别为队列a和队列b的头指针,它们的尾指针分别为ra和rb。...初始时,X=1,fa=fb=ra=rb=1;                                     (2)将2*x+1和3*x+1分别放入队列a和队列b的队尾,尾指针加1。                 ...即:a[r]←2*x+1,b[r]←3*x+1,r←r+1;       (3)将队列a和队列b的头结点进行比较,可能有三种情况:         (A)a[ha]>b[hb]      (B)a[ha...]=b[hb]         (C)a[ha]<b[hb]       将比较的小者取出送入X,取出数的队列的头指针相应加1。

1.8K40

使用 querySelector 查询元素时,如何使用正则进行模糊匹配查询?

你好,今天聊一个简单的技术问题,使用 querySelector 方法查询网页上的元素时,如何使用正则进行模糊匹配查询?...这要用到元素属性值正则匹配选择器,它包括下面 3 种: [attr^="val"] 前匹配 [attr$="val"] 后匹配 [attr*="val"] 任意匹配 其中,尖角符号^、美元符号$ 以及星号...*都是正则表达式中的特殊标识符,分别表示前匹配、后匹配和任意匹配。...如果我们在智能化产品中直接这样查询目标元素: document.querySelector('h2.UserInfoBox_textEllipsis_13jj5') 下次产品重发后,代码便不再有效了。...在 JS 中,计算属性也是使用中括号,这种写法是一致的、合理的; 2)在中括号内,使用 k=v 形式书写,并且在 k 后面可以跟^、$、*三个正则符号,分别表示前匹配、后匹配和任意匹配。

3.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    querySelector和getElementById方法的区别

    一、querySelector() 的定义 querySelector() 方法选择指定 CSS 选择器的第一个元素 querySelectorAll() 方法选择指定的所有元素 二、与 getElementBy...HTMLCollection,而 querySelector 方法返回的结果是 NodeList; 另外,query 选择符选出来的元素是静态的,而 getElement 这种方法选出的元素的动态的。...这里的静态指的是选出的元素不会随着文档操作而改变。...(document.createElement('li')); } // 这时创建了3个新li,添加在ul列表中 console.log(list.length) // 输出3,输出的是添加前...ul列表中 console.log(list.length) // 输出6 以上代码中,querySelector 选择的 li 元素不会随着文档的操作而从3变为6; 在性能上,Chrome 浏览器下

    2.2K10

    关于动态创建DOM元素的问题

    在我们实际的项目之中,相信有很多的朋友直接使用了以下的格式创建DOM元素 document.getElementById("...关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子: 第一种正确方式: //使用Dom标准创建元素 var select = document.createElement("select...第二种方式: 使用Jquery 当HTML字符串是没有属性的元素是, 内部使用document.createElement创建元素, 比如: //jQuery内部使用document.createElement...创建元素: $(" ").css("border","solid 1px #FF0000").html("动态创建的div").appendTo(testDiv); 否则使用innerHTML方法创建元素...: //jQuery内部使用innerHTML创建元素: $(" 动态创建的div ").appendTo(testDiv) (引自:http://kb.cnblogs.com/page/46453

    3.1K20

    LeetCode-347-前K个高频元素

    # LeetCode-347-前K个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。...总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。...你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。...# 解题思路 方法1、最小堆: 首先利用Map来计算数组中数字出现的频率 之后利用一个优先队列,在存储的过程中按照频率进行排序,且只存储频率最高的前K个数 由于题目要求的顺序可以不同,所以最后一次弹出queue...中的数字到list中就好了 计算频率这个步骤需要 O(N)时间其中 N是列表中元素个数。

    32210

    力扣347——前 K 个高频元素

    这道题主要涉及的是对数据结构里哈希表、小顶堆的理解,优化时可以参考一些排序方法。 原题 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。...总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。...此处的时间复杂度为O(n) 其次,因为需要查找频率前 k 高的元素,所以我们肯定是需要排序的,时间复杂度为O(n log n)的排序方法有许多,快速排序、堆排序等,我是用的堆排序,使用小顶堆,这样在每次入堆的时候...,检查一下堆的个数是否超过 k,如果超过,则移除堆顶的元素(也就是次数最少的元素)。...桶排序优化 针对排序,我想到了一个优化,利用桶排序,其时间复杂度为O(n),主要是浪费空间,因为需要申请额外的数组,下标代表出现的次数,元素我用的是 LinkedList,这样可以存储多个。

    49230

    golang刷leetcode 前 K 个高频元素

    给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。...= [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 1 <= nums.length <= 105 k 的取值范围是...[1, 数组中不相同的元素的个数] 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的 进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。...解法一: 解题思路 1,将数组转化成数字、频次对 2,对于k高频的,我们可以采用小根堆,来做排序 func topKFrequent(nums []int, k int) []int { m:...nlogn,且每一次排序后,pivot前面的元素都比pivot大,后面的都比pivot小 3,类比这个思路: A,pivot==k,pivot前面的元素就是所求,得解 B,pivot>k,我们继续在

    34910

    leetcode-347-前K个高频元素

    题目描述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 提示: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。...你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。...基本思路是先把元素和元素个数存入字典, 然后反转key-value. 因为value 有重复的情况, 所以把重复对应的key以List形式作为值....题解1: 执行用时:44 ms, 在所有 Python3 提交中击败了94.56%的用户 内存消耗:16.4 MB, 在所有 Python3 提交中击败了93.97%的用户 from typing...int]: rd = {} # type: Dict[int, int] cd = {} # type: Dict[int, List[int]] # 把元素和元素个数对存入字典

    85230

    LeetCode-347-前K个高频元素

    # LeetCode-347-前K个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。...,且 1 ≤ k ≤ 数组中不相同的元素的个数。...你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。...# 解题思路 方法1、最小堆: 首先利用Map来计算数组中数字出现的频率 之后利用一个优先队列,在存储的过程中按照频率进行排序,且只存储频率最高的前K个数 由于题目要求的顺序可以不同,所以最后一次弹出queue...中的数字到list中就好了 计算频率这个步骤需要 O(N)时间其中 N是列表中元素个数。

    27620

    LeetCode32|前k个高频元素

    1,问题简述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。...k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。...你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺序返回答案。...6,键值对集合的使用,这里自己也曾经分析过java集合的源码,具体见下面的链接吧,但是自己从未去写过hashMap的源码,因为网络上这样的文章的太多了,自己倒是分析过HashSet的源码java进阶|HashSet...的源码分析,HashSet是基于HashMap的基础上实现的,自己也分过HashMap的源码文章,但是从没有去写一篇文章

    40520

    getElementBy系列和querySelector系列的区别

    querySelector和querySelectorAll的用法和getElementBy大致一样,获取的时候带上符号,getElementBy获取的是元素的动态集合,querySelector获取的是元素的静态集合...但是需要注意:getElementBy系列和querySelector系列的区别 比如,我们写一个for循环,每次获取li标签的时候,ul生成一个li子元素 a...每调用一次就会重新对文档进行查询,就会进入死循环 进行修改:把i < li.length改成i < 3,把li标签数组静态化,然后打印 conosle.log(li.length) // 6 重新用querySelector...获取一遍元素 a b c var ul = document.querySelector...= 3,而不是增加后的 6 静态集合体现在querySelectorAll('li')获取到ul里所有li后,不管后续再动态添加了多少li,都是不会对其参数影响

    50010
    领券