Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >算法(简单)_搜索二维矩阵&分解质因数

算法(简单)_搜索二维矩阵&分解质因数

作者头像
OBKoro1
发布于 2020-10-27 03:53:50
发布于 2020-10-27 03:53:50
40100
代码可运行
举报
运行总次数:0
代码可运行

搜索二维矩阵

难度:简单

描述:

写出一个高效的算法来搜索 m × n 矩阵中的值。

这个矩阵具有以下特性:

  1. 每行中的整数从左到右是从小到大排序的。
  2. 每行的第一个数大于上一行的最后一个整数。

样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  [1, 3, 5, 7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]

给出 target = 3,返回 true

题目分析:

双循环找出是否有这个值,根据第二个特性,我们可以跳过一些第二层循环,算法更具效率。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @param matrix: matrix, a list of lists of integers
 * @param target: An integer
 * @return: a boolean, indicate whether matrix contains target
 */
const searchMatrix = function(matrix, target) {
  for (let key of matrix.keys()) { // 遍历外层数组
    let value = matrix[key]; // 拿到每行元素
    // 判断target是否在当前行中,跳过其他不必要循环
    if (target <= value[value.length - 1]) { 
      for (let item of value.keys()) { // 遍历行中元素 
        if (target === value[item]) { // 找到值
          return true;
        } else if (target < value[item]) {  // 值超过target即找不到(因为是排序的)
          return false;
        }
      }
    }
  }
  return false;  // 没有找到即返回false
};

分解质因数

难度:简单

质因数的定义:

能整除给定正整数的质数。

百度百科:质因数

描述:

  1. 将一个整数分解为若干质因数之乘积
  2. 你需要从小到大排列质因子

样例:

  • 给出 10, 返回 [2, 5]
  • 给出 660, 返回 [2, 2, 3, 5, 11]

题目分析:

从小到大排列质因子,需要将同一个质因子整除干净。

比如:20 可以被 2 整除两次。

提示:需要两层循环。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 分解质因数
const primeFactorization = function(num) {
  let res = [];
  // 不需要判定i是否为质数,如果i不为质数,且能整除num时,num早被i的因数所除。故能整除num的i必是质数。
  // i * i > num 退出循环 num一开始会在第二层循环被i整除成比较小的数字
  for (let i = 2; i * i <= num; i++) {
    while (num % i === 0) {
      // 直到有余数退出循环
      num = num / i; // 改变num
      res.push(i); // 没有余数 能整除 这一步会找出所有质因数 不会出现4的那种情况
    }
  }
  if (num !== 1) res.push(num); // num到最后也是质因数
  return res;
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OBKoro1前端进阶积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AtCoder Beginner Contest 177 A ~ E
C 思路:数据范围比较大,O(n^n)的复杂度肯定不可以,那么我们要分析式子 假设有一组数据:
杨鹏伟
2020/09/10
4250
每日一题C++版(分解质因数)
编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化和锻炼自己的编程能力(最起码不会忘记编程)
小白学视觉
2019/10/24
1.6K0
试题 基础练习 分解质因数
资源限制 内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述   求出区间[a,b]中所有整数的质因数分解。 输入格式   输入两个整数a,b。 输出格式   每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例) 样例输入 3 10 样例输出 3=3 4=22 5=5 6=23 7=7 8=222 9=33 10=25 提示   先筛出所有素数,然后再分解。 数据规模和约定   2<=a<=b<=10000 运行结果:
GeekLiHua
2025/01/21
870
算法基础学习笔记——⑫最小生成树\二分图\质数\约数
罗列出每个数,依次删除每个数的倍数,剩下的数就是质数,可以对此进行优化,可以不删每一个数的倍数, 可以只删质数的倍数,这样就不用重复删。
命运之光
2024/03/20
1380
算法基础学习笔记——⑫最小生成树\二分图\质数\约数
Python3 初学实践案例(11)判断质数以及计算一个数字的质因数
判断是否为质数,我之前用 js 写过,详情参见:http://blog.csdn.net/FungLeo/article/details/51483844
FungLeo
2022/05/05
5320
Python3 初学实践案例(11)判断质数以及计算一个数字的质因数
分解质因数
  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
lop
2019/03/13
9080
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
将一个正整数分解质因数。例如:输入90,打印出90=233*5。 //题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 //程序分析:对n进行分解质因数,应先找到一个最小的质数k #include int main() { int n,i; printf("请输入整数:"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++)//遍历从2到本身的所有数 { while
川川菜鸟
2021/10/18
9780
分解质因数
给定 n个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
GeekLiHua
2025/01/21
1400
基础练习 分解质因数
  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
刘开心_1266679
2019/02/14
6770
LeetCode周赛301,离大谱,手速场掉分,质量场掉大分……
今天是周一,我们来看下第301场的LeetCode周赛。这一场由中国银联赞助。前500名都有内推的机会,离谱的是老梁我刚好第502名……
TechFlow-承志
2022/09/21
3760
LeetCode周赛301,离大谱,手速场掉分,质量场掉大分……
蓝桥杯 基础练习 分解质因数
 每行输出一个数的分解,形如k=a1*a2*a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
Meng小羽
2019/12/23
4020
Python3 判断质数以及计算一个数字的质因数
计算质数的关键是要减少运算量。如果傻呢,就从1循环到这个数字来进行全量循环计算。聪明一点就不需要了,只需要循环到这个数字的平方根的数字即可。
FungLeo
2019/05/27
2.7K0
C++经典算法题-将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
1. 题目 题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。 2. 分析 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 3. 代码示例 main() { int n,i; pri
cwl_java
2020/01/14
3.1K0
整数质因数分解
每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。
算法与编程之美
2023/08/22
1870
整数质因数分解
分解质因数
分解质因数是将一个正整数分解为若干个质数的乘积的过程。每个质数都是一个素数,即只能被1和自身整除的数。
孟斯特
2024/04/11
2820
分解质因数
蓝桥杯 试题 基础练习 分解质因数
思路:我们可以先求出从2到b之间所有的素数,把这些素数插入数组,然后每次从头遍历这个素数数组,如果当前的数能整除素数,那么跟新新的当前的值,及除以素数,然后从头开始重新遍历素数数组。如果不能整除当前数组,那么就++,尝试下一个素数!
杨鹏伟
2020/09/11
3510
六十六、丑数系列,丑的颠覆我的思想
取一粒跳跃的文字,镶进九月的诗篇,无论是水榭的一角,还是月下的花园,只要有岁月的空格,就能拼接出精美的图案。
润森
2022/08/17
3060
六十六、丑数系列,丑的颠覆我的思想
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-605 分解质因数
        这段时间我会把蓝桥杯官网上的所有非VIP题目都发布一遍,让大家方便去搜索,所有题目都会有几种语言的写法,帮助大家提供一个思路,当然,思路只是思路,千万别只看着答案就认为会了啊,这个方法基本上很难让你成长,成长是在思考的过程中找寻到自己的那个解题思路,并且首先肯定要依靠于题海战术来让自己的解题思维进行一定量的训练,如果没有这个量变到质变的过程你会发现对于相对需要思考的题目你解决的速度就会非常慢,这个思维过程甚至没有纸笔的绘制你根本无法在大脑中勾勒出来,所以我们前期学习的时候是学习别人的思路通过自己的方式转换思维变成自己的模式,说着听绕口,但是就是靠量来堆叠思维方式,刷题方案自主定义的话肯定就是从非常简单的开始,稍微对数据结构有一定的理解,暴力、二分法等等,一步步的成长,数据结构很多,一般也就几种啊,线性表、树、图、再就是其它了。顺序表与链表也就是线性表,当然栈,队列还有串都是属于线性表的,这个我就不在这里一一细分了,相对来说都要慢慢来一个个搞定的。蓝桥杯中对于大专来说相对是比较友好的,例如三分枚举、离散化,图,复杂数据结构还有统计都是不考的,我们找简单题刷个一两百,然后再进行中等题目的训练,当我们掌握深度搜索与广度搜索后再往动态规划上靠一靠,慢慢的就会掌握各种规律,有了规律就能大胆的长一些难度比较高的题目了,再次说明,刷题一定要循序渐进,千万别想着直接就能解决难题,那只是对自己进行劝退处理。加油,平常心,一步步前进。
红目香薰
2023/02/23
2730
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-605 分解质因数
【蓝桥杯】BASIC-16 分解质因数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/13
4840
【C素数】素数(质数)和分解质因数
种一棵树最好的时间是十年前,其次是现在 文章目录 判断一个数是否是素数 1-1.基本概念: 1-2.题目描述: 1-3.题解思路: 1-4代码实现 1-4-1方法一:直接flag标记法: 1-4-2方法二:函数法: 2-1基本概念 2-2分解质因数和最大质因数 2-3题目描述 2-4解题思路 2-5代码实现 2-5-1方法:函数递归法: 判断一个数是否是素数 博主今天在复习C语言的时候遇到质因数,发现这个知识点忘记了,故有了此篇 先来复习一下概念吧: 一.素数 1-1.基
MicroFrank
2023/01/16
1.1K0
推荐阅读
相关推荐
AtCoder Beginner Contest 177 A ~ E
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档