首页 > 其他分享 >leetcode刷题笔记

leetcode刷题笔记

时间:2024-07-15 15:10:52浏览次数:19  
标签:std matrix nums int 笔记 ++ vector leetcode 刷题

11 妙用数据结构

11.2 数组

  • 448 找到所有数组中消失的数字
// 方法1
// 1.使用一个数组的下标记录每个对应数字出现的次数
// 2.遍历数组,根据值为0的元素所在的下标确定没有出现过的数字
std::vector<int> findDisappearedNumbers(std::vector<int> &nums) {
    std::vector<int> count(nums.size());
    std::vector<int> result;
    for (int i = 0; i < nums.size(); ++i) {
        count[nums[i] - 1]++;
    }
    for (int i = 0; i < nums.size(); ++i) {
        if (count[i] == 0) {
            result.push_back(i + 1);
        }
    }
    return result;
}
//方法2
//直接对原数组进行标记:将下标为(出现的数字-1)的元素的值设为负数,最后值为正数的元素所在下标+1即为没有出现过的数字
std::vector<int> findDisappearedNumbers(std::vector<int> &nums) {
    std::vector<int> result;
    for (int i = 0; i < nums.size(); ++i) {
        int position = std::abs(nums[i]) - 1;
        if (nums[position] > 0) {
            nums[position] = -nums[position];
        }
    }
    for (int i = 0; i < nums.size(); ++i) {
        if (nums[i] > 0) {
            result.push_back(i + 1);
        }
    }
    return result;
}
  • 48 旋转图像
// 方法1
//(i,j)位置的元素旋转90°后变成了(j,n-1-i)位置(n为二维数组大小)
void rotate(vector<vector<int>> &matrix) {
    auto matrix_new = matrix;
    int n = matrix.size();
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            matrix_new[j][n - 1 - i] = matrix[i][j];
        }
    }
    matrix = matrix_new;
}
// 方法2
// 每4个元素为一组:matrix[i][j] => matrix[j][n-1-i] => matrix[n-1-i][n-1-j] => matrix[n-1-j][i]
// 如何确定遍历的范围:如果n为偶数,则需要遍历n^2/4=(n/2)*(n/2)个元素;如果n为奇数,则需要遍历(n^2-1)/4=(n-1)/2*(n+1)/2个元素
void rotate(vector<vector<int>>& matrix) {
    int n = matrix.size();
    int temp;
    for (int i = 0; i < n / 2; ++i) {
        for (int j = 0; j < (n + 1) / 2; ++j) {
            temp = matrix[n - 1 - j][i];
            matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
            matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
            matrix[j][n - 1 - i] = matrix[i][j];
            matrix[i][j] = temp;
        }
    }
}

标签:std,matrix,nums,int,笔记,++,vector,leetcode,刷题
From: https://www.cnblogs.com/akongogogo/p/18302887

相关文章

  • NPA论文阅读笔记
    NPA:NeuralNewsRecommendationwithPersonalizedAttention论文阅读笔记这个又是一篇很老但是很经典的论文,这里来读一下Abstract现存的问题:​ 不同的用户通常有不同的兴趣爱好,同一用户也可能有不同的兴趣爱好。因此,不同的用户点击同一篇新闻时可能会关注不同的方面。提出......
  • 硬件开发笔记(二十六):AD21导入电感原理图库、封装库和3D模型
    前言  电阻,电容,电感还有各种基础的电子元器件、连接器和IC构成了各种实现功能的电子电路。  本篇介绍电感,并将贴片电感封装导入AD21,预览其三维模型。 贴片电感  贴片电感作为电子元件中的重要一员,因其小型化、高品质、高能量储存和低电阻等特性,在电子线路中发挥......
  • 大数据之路 读书笔记 Day5 数据同步遇到的问题与解决方案
    回顾Day4数据同步Day3无线客户端的日志采集1.分库分表的处理分库分表(Sharding)是数据库水平扩展的一种策略,当单个数据库的性能和存储能力无法满足应用需求时,可以采用分库分表来分散数据和查询负载。它通常包括两个方面:分库(DatabaseSharding)和分表(TablePartitio......
  • 大数据之路 读书笔记 Day6 离线数据开发之数据开发平台
    回顾Day5数据同步遇到的问题与解决方案Day4数据同步1.统一计算平台1.1MaxCompute概述MaxCompute(原名ODPS,OpenDataProcessingService)是阿里云提供的一种快速、完全托管的EB级数据仓库解决方案。它为用户提供了海量数据存储和实时计算的能力,适用于离线数据处理......
  • Leetcode【编辑距离】
    72.编辑距离给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1="horse",word2="ros"输出:3解释:horse->rorse(将'h'替换为......
  • 第七天学习笔记(经验测试,白盒测试)
    经验测试法错误推测法基于经验的测试技术之错误推测法错误推测法也叫错误猜测法,就是根据经验猜想,已有的缺陷,测试经验和失败数据等可能有什么问题并依此设计测试用例.异常分析法基于经验的测试技术之异常分析法系统异常分析法就是针对系统有可能存在的异常操作、软硬件缺陷......
  • LeetCode 1530. Number of Good Leaf Nodes Pairs
    原题链接在这里:https://leetcode.com/problems/number-of-good-leaf-nodes-pairs/description/题目:Youaregiventhe root ofabinarytreeandaninteger distance.Apairoftwodifferent leaf nodesofabinarytreeissaidtobegoodifthelengthof thesh......
  • 动态图连通性笔记
    首先离线的话有几种方法:线段树分治动态维护最大生成树:边的权值为他的(下一次)删除时间,加边正常做,询问时问路径最小值是否小于当前时刻.动态图连通性Holm-deLichtenberg-Thorup(HLT)暴力:维护生成森林,若删树边则暴力找另一条边能替代这条树边.思想:给每条边赋一个“不重......
  • 学习笔记-estimator
    基于tensorflow1.15importtensorflowastf#创建一个分类特征列,使用词汇表列表categorical_column=tf.feature_column.categorical_column_with_vocabulary_list(key="your_feature_name",#这应该是你的数据中特征的键名vocabulary_list=["value1","value2......
  • Improving News Recommendation via Bottlenecked Multi-task Pre-training论文阅读笔
    ImprovingNewsRecommendationviaBottleneckedMulti-taskPre-training论文阅读笔记Abstract现存的问题:​ 现有的PLM大多是在大规模通用语料库上预先训练的,并没有专门用于捕捉新闻文章中的丰富信息。因此,它们生成的新闻嵌入信息可能不足以表示新闻内容或描述新闻之间的关......