力扣刷题笔记day8(二维数组中的查找+旋转数组的最小数字+第一个只出现一次的字符)

news2024/12/29 19:48:24

文章目录

  • 二维数组中的查找
    • 题目
    • 思路
    • 代码
  • 旋转数组的最小数字
    • 题目
    • 思路
    • 代码
  • 第一个只出现一次的字符
    • 题目
    • 思路
    • 代码

二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

题目

在这里插入图片描述

思路

在以左下角为原点作坐标轴;
就如题目中所示,由左至右她是递增的,由下至上是递减的,我们直接比较
matrix[x][y]的大小和target的大小。
:由左上角作为原点循环的时候会有些问题(多循环一次类似的问题)。

代码

var findNumberIn2DArray = function(matrix, target) {
    if(!matrix.length) return false;
    let x = matrix.length - 1, y = 0;
    while(x >= 0 && y < matrix[0].length){
       // console.log(matrix[x][y])
        if(matrix[x][y] === target){
            return true;
        }else if(matrix[x][y]>target){
            x--;
        }else{
            y++;
        }
    }
    return false;
};

旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。

注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。

题目

在这里插入图片描述

思路

采用二分查找的方法;
注意观察原数组:
当numbers[mid]>numbers[right]的时候,也就是有一段递减的时候,从题中可以得出就只有包含由最大值到最小值那段区间的才会有递减区间,最小值一定在[mid+1,right]之间;例如;[3,0,1,2]
当numbers[mid]<numbers[left]&&numbers[mid]<=numbers[right]时,就说明numbers在[left,right]之间先减后增,由此最小值在[left,mid];例如:[3,0,1,2]
最后一种情况就是numbers[mid]>numbers[left]&&numbers[mid]<=numbers[right],则数组是先增后减,是一个山峰的形状,没有办法判断最小值区间,就只能进一步缩小right来逼近。例如:[2,3,0,1]

代码

var minArray = function(numbers) {
    let left=0;
    let right=numbers.length-1;
    while(left<right)
    {
        let mid=Math.floor((right+left)/2);
        console.log(numbers[mid])
        if(numbers[mid]>numbers[right])
        {
            left=mid+1
        }
        else if(numbers[mid]<numbers[left])
        {
            right=mid
        }
        else{
           right--
        }
    }
    return numbers[right]
};

第一个只出现一次的字符

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

题目

在这里插入图片描述

思路

第一种:哈希表
存储每个字母出现的次数
第二种:巧用Indexof和lastIndexof
第一次出现的值和最后一次出现的值相同

代码


var firstUniqChar = function(s) {
     let map=new Map();
     for(let i of s)
     {
         if(!map.has(i))
         {
             map.set(i,1)
         }else{
             map.set(i,map.get(i)+1)
         }
     }
    for(let i of s)
    {
        if(map.get(i)==1)
        {
            return i
        }
    }
    return ' '



};
var firstUniqChar = function(s) {
    for(let i of s){
        if(s.indexOf(i) === s.lastIndexOf(i)) return i;
    }
    return ' ';
};
\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中级集成和高级信息系统项目管理怎么选?考哪个?

二者只有一个不同&#xff0c;高级需要考论文&#xff0c;如果有时间&#xff0c;有需求&#xff0c;就直接冲高级&#xff0c;一步到位&#xff1b; 下面一起看看两个科目的不同之处&#xff1a; 系统集成项目管理工程师 通过本考试的合格人员能够掌握系统集成项目管理的知识…

linux armhf ubuntu18.04搭建docker

1、开发环境 文件系统版本&#xff1a;ubuntu18.04 armhf 内核版本&#xff1a;linux4.1.15 docker版本&#xff1a;20.10.22 2、ubuntu上安装docker 1、卸载过往的版本 sudo apt-get remove docker docker-ce docker.io containerd runc2、重新更新、安装 sudo apt-get …

vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

部分问题 uc浏览器 rgb支持不全 如rgb(0 0 0 /30%) 这种写法不支持 tailwindcss v3 部分样式在低版本下也不支持 uc浏览器 对于 tailwindcss boxShadow 不支持 主要还是rgb原因 兼容 直接贴出代码 使用 tailwindcss 2.2.16 版本 v3低版本不支持 tailwindcss v2的 jit模式 和…

插值算法基本原理

插值&#xff1a;数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合&#xff1a;预测&#xff0c;寻找规律的手段 是插值的外延 插值算法&#xff1a;使用在现有的数据极少&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学方法…

植物激素基因高级分析来啦~

很多植物转录组学文章中&#xff0c;都有整合激素相关基因和表达数据的pathway图&#xff0c;直观地展示通路及其中重要基因的位置和功能。 植物激素&#xff08;Phytohormone&#xff09;亦称植物天然激素或植物内源激素&#xff0c;是指植物体内产生的一些微量而能调节&…

排序算法——快速排序

快排 ​ 确定一组数据 &#xff0c;即q数组 ​ 左端点为了&#xff0c;右端点为r ​ &#xff08;1&#xff09;确定分界点 ​ q[l] 或 q[ (l r) / 2] 或 q[r] 或任意一个数 作为分界点&#xff0c;分界点数为x ​ &#xff08;2&#xff09;调整区间 &#xff08;重点&a…

能源监控管理系统|瑜岿科技

瑜岿科技在产业转型升级过程中积极布局智能制造、物联网产业细分领域&#xff0c;拥抱多元化市场。立足市场、顺势而为&#xff0c;以创新理念驱动产业变革&#xff0c;以互联网、物联网思维重塑经营模式&#xff0c;成功打造“碳中和 碳达峰”背景下——能源监控管理系统。 智…

leetCode周赛-317

这里写目录标题题目一&#xff1a;6220.可被三整除的偶数的平均值题目二&#xff1a;6221. 最流行的视频创作者题目三&#xff1a;6222. 美丽整数的最小增量题目四&#xff1a;2458. 移除子树后的二叉树高度题目一&#xff1a;6220.可被三整除的偶数的平均值 AC代码&#xff1…

考研数学练习题-2022年12月23日

日期&#xff1a;2022年12月23日 数量&#xff1a;10

deck.gl 调研

0 结论 deck gl 是基于 WebGL 的数据可视化框架&#xff0c;可以集成在主流的地图框架&#xff08;arcgis&#xff0c;google maps&#xff0c;mapbox &#xff09;中使用&#xff0c; 也可以单独使用。 deck gl 通过layer进行数据可视化&#xff0c;支持多种展示效果&#xf…

什么是网络监控?OpManager 网络监控解决方案

什么是网络监控 在当今世界&#xff0c;术语网络监控在整个IT行业中很普遍。网络监控是一个关键的 IT 过程&#xff0c;其中所有网络组件&#xff08;如路由器、交换机、防火墙、服务器和虚拟机&#xff09;都受到故障和性能监控&#xff0c;并持续评估以维护和优化其可用性。…

基于防火墙双击热备三层网络规划_ensp综合实验

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容基于防火墙双击热备三层网络规划_ensp综合实验前言及技术/资源下载说明&#xff08; **未经允许禁止转发任何内容** &#xff09;插曲&#xff1a;基于eNSP中大型校园/企业网络规划与设…

聊聊首次使用航顺HK32F030C8T6的体验

先说结论&#xff0c;项目基本上开发测试完成了,mcu运行正常。 这个项目是一个智能家居的项目&#xff0c;主板和副板都使用了HK32F030C8T6&#xff0c;这也是笔者第一次使用航顺的芯片。 关于这个芯片的资料&#xff0c;从官网只能下载到datasheet和user mannal的pdf文档&am…

代码随想录训练营第59天|LeetCode 503.下一个更大元素II、42. 接雨水

参考 代码随想录 题目一&#xff1a;LeetCode 503.下一个更大元素II 这个题在496. 下一个更大元素 I基础上数组变成了环&#xff0c;其实两次两次数组就可以了。代码如下&#xff1a; class Solution { public:vector<int> nextGreaterElements(vector<int>&am…

即时通讯实时视频聊天技术提供QoS保证的方法

随着WebRTC标准的逐步推广&#xff0c;实时音视频通讯技术受到越来越多公司和技术人员的关注。 对于交互式音视频应用而言&#xff0c;稳定、低延时、通话质量清晰可靠是其基本需求。在互联网环境下&#xff0c;音视频的通话质量与以下因素有关&#xff1a;一是编码码率、帧率和…

Opencv IplImage 和 Mat 使用介绍

1. IPIImage 使用介绍 IplImage是OpenCV中CxCore部分基础的数据结构&#xff0c;用来表示图像&#xff0c;其中Ipl是Intel Image Processing Library的简写。以下是IplImage的结构分析。参见:OpenCV中文网站 typedef struct _IplImage{int nSize; /* IplImage大小 *…

70页幻灯片图解“工信领域数据安全管理办法”等五部委数据法规

国家安全是民族复兴的根基。党的二十大报告指出&#xff0c;“加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国”、“推进国家安全体系和能力现代化”、“强化经济、重大基础设施、金融、网络、数据、生物、资源、核、太空、海洋等安全保障体系建设”。数…

02-redis篇 redis事务处理及使用方式

目录 1. 事务简介: -> 1.1 必须满足: ACID四个特性(原子性,一致性,隔离性,持久性) -> 1.2 简单理解: 一个业务,也可以看成是一个逻辑工作单元; 2. redis 操作事务的基本指令 -> 指令: -> 图式: 3. 模拟多事务操作(watch乐观锁) 3.1 不开启乐观锁watch操作…

Linux Python安装

1.到官网下载适合自己的版本 Python Source Releases | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/source/2.下载好压缩包之后&#xff0c;将压缩包解压开 3.将开发环境的依赖包准备好 yum -y install zlib-devel bz…

阅读笔记 MulDA: DAGA向多语言方向的拓展

阅读笔记 MulDA: DAGA向多语言方向的拓展 文章目录阅读笔记 MulDA: DAGA向多语言方向的拓展前言概述IntroductionMulDA: Our Multilingual Data Augmentation Framework1、Labeled Sequence Translation2、Synthetic Data Generation with Language Models3、Semi-supervised M…