zoukankan      html  css  js  c++  java
  • Array 数组

    1. 是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。所以JS中的Array不是真正意义上的数组,实际上是散列表存储。

    2. CPU缓存也有优势,CPU时间是一次读取当前内存,往后多一点的内容,避免频繁与内存交互,效率更高。

    3. 为何索引是从0开始的? a. 历史原因,c语言是从0开始定义;b. 这里的索引其实是偏移量,第一个位置是不需要偏移,所以为0,减少一次cpu计算偏移量。比如第二个元素,偏移量就是索引1, 而不需要多一次计算(2-1)或者(n-1)次。

    4. c语言没有数组越界的概念,js也是。高级语言java,c#有。

    5. 高级语言一般有动态扩容的数组,ArrayList,这个对象使用起来很方便,但是空间利用率不高,同时存储起来也更费空间。

    LeetCode力扣 相关题目

    1. 2/3数之和等于某个值,下面例子只有一组答案。3个数求解类似的。

    暴力求解 O(n^2)
    var
    twoSum = function (nums, target) { for (let i = 0; i < nums.length - 1; i++) { for (let j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] === target) { return [nums[i], nums[j]]; } } } };
    //用散列表结构记录下,时间复杂度优化为O(n),我们假定只有一组数据满足。
    var twoSum = function(nums, target) { let res = {} for (let i = 0; i < nums.length; i++) { // 每个人报出自己想要配对的人 if (res[nums[i]] !== undefined) { // 如果有人被登记过 return [nums[i], res[nums[i]]] // 就是他 } else { res[target - nums[i]] = nums[i] // 主持人记住他的需求 } } }
    3个数求和为 0
    var threeSum = function(nums) { let res = [] let hash = {} for (let i = 0; i < nums.length - 2; i++) { // 每个人 for (let j = i + 1; j < nums.length - 1; j++) { // 依次拉上其他每个人 if (hash[nums[j]] !== undefined) { // 已经有合适自己的两人组 res.push([nums[j]].concat(hash[nums[j]])) hash[nums[j]] = undefined } else { // 没有合适自己的两人组 let mark = 0 - nums[i] - nums[j] hash[mark] = [nums[i], nums[j]] } } } return res }

    2. 求众数

     https://leetcode-cn.com/problems/majority-element/

    a. 排序后,中间索引那个数一定是众数。

    b. hash记录数据个数,超过n/2 也就是他了。

    3.求缺失的最小正整数

    https://leetcode-cn.com/problems/first-missing-positive/

    var firstMissingPositive = function(nums) {
        if(nums.length === 0){
            return 1;
        }
    
        let mySet = new Set();
        for(let i =0; i < nums.length; i++){
            if(nums[i] > 0){
                mySet.add(nums[i])
            }
        }
    
        let i =1;
        for(;i <= nums.length; i ++){
            if(!mySet.has(i)){
                return i;
            }
        }
    
         return i;
    
    };
  • 相关阅读:
    Javascript逻辑运算认识
    Javascript基本数据认识
    python爬虫数据提取之bs4的使用方法
    权限和频率组件的使用
    版本控制和认证组件的使用
    drf中View和router的详解
    Serializers组件详解
    REST架构简介
    模型层中QuerySet的学习
    最全总结!聊聊 Python 发送邮件的几种方式
  • 原文地址:https://www.cnblogs.com/roy1/p/13530201.html
Copyright © 2011-2022 走看看