算法基础九

Python学习之旅:进阶阶段(九)算法基础-冒泡排序算法 在 Python 编程的进阶学习中,算法是核心内容之一。今天,我们来认识一种基础且经典的排序算法 —— 冒泡排序算法。它就像一场有序的 “舞蹈”,让数据按照我们期望的顺序排列。下面,让我们一起走进冒泡排序的世界。 阅读详情

螺旋矩阵2

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。

示例 1:
输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1 输出:[[1]]

解题思路:里面元素是1 - n*n,并且数组是顺序螺旋排列。


    public int[][] generateMatrix(int n) {
        int maxNum = n * n;
        int curNum = 1;

        int[][] matrix = new int[n][n];
        int row = 0;
        int column = 0;
        int[][] directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        int directionIndex = 0;
        while(curNum <= maxNum) {
            matrix[row][column] = curNum;
            curNum++;
            int nextRow = row + directions[directionIndex][0];
            int nextColumn = column + directions[directionIndex][1];
            if (nextRow < 0 || nextRow >= n || nextColumn < 0 || nextColumn >= n || matrix[nextRow][nextColumn] != 0) {
                directionIndex = (directionIndex + 1) % 4; // 顺时针旋转至下一个方向
            }

            row = row + directions[directionIndex][0];
            column = column + directions[directionIndex][1];
        }

        return matrix;
    }

排列序列

给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
“123”
“132”
“213”
“231”
“312”
“321”
给定 n 和 k,返回第 k 个排列。

示例 1:
输入:n = 3, k = 3 输出:“213”
示例 2:
输入:n = 4, k = 9 输出:“2314”
示例 3:
输入:n = 3, k = 1 输出:“123”

解题思路:DFS

 public String getPermutation(int n, int k) {
        int[] factorial = new int[n];
        factorial[0] = 1;
        for (int i = 1; i < n; ++i) {
            factorial[i] = factorial[i - 1] * i;
        }

        --k;
        StringBuffer ans = new StringBuffer();
        int[] valid = new int[n + 1];
        Arrays.fill(valid, 1);
        for (int i = 1; i <= n; ++i) {
            int order = k / factorial[n - i] + 1;
            for (int j = 1; j <= n; ++j) {
                order -= valid[j];
                if (order == 0) {
                    ans.append(j);
                    valid[j] = 0;
                    break;
                }
            }
            k %= factorial[n - i];
        }
        return ans.toString();
    }

旋转链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例 1:
输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3]
示例 2:
输入:head = [0,1,2], k = 4 输出:[2,0,1]

public ListNode rotateRight(ListNode head, int k) {
        if (k == 0 || head == null || head.next == null) {
            return head;
        }
        int n = 1;
        ListNode iter = head;
        while (iter.next != null) {
            iter = iter.next;
            n++;
        }
        int add = n - k % n;
        if (add == n) {
            return head;
        }
        iter.next = head;
        while (add-- > 0) {
            iter = iter.next;
        }
        ListNode ret = iter.next;
        iter.next = null;
        return ret;
    }

不同路径

一个机器人位于一个 m * n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,问总共有多少条不同的路径?

示例 1:
输入:m = 3, n = 7 输出:28
示例 2:
输入:m = 3, n = 2 输出:3
示例 3:
输入:m = 7, n = 3 输出:28
示例 4:
输入:m = 3, n = 3 输出:6

解题思路:动态规划


 public int uniquePaths(int m, int n) {
     int[][] dp = new int[m][n];
     for (int i = 0; i < n; i++) {
         dp[0][i] = 1;
     }
     for (int i = 0; i < m; i++) {
         dp[i][0] = 1;
     }
     for (int i = 1; i < m; i++) {
         for (int j = 1; j < n; j++) {
             dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
         }
     }
     return dp[m - 1][n - 1];  
 }

不同路径2

一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。

示例 1:
输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
示例 2:
输入:obstacleGrid = [[0,1],[0,0]]
输出:1


 public int uniquePathsWithObstacles(int[][] obstacleGrid) {
     int len = obstacleGrid.length;
     int m = obstacleGrid[0].length;

     int[] f = new int[m];

     f[0] = obstacleGrid[0][0] == 0 ? 1 : 0;
     for (int i = 0; i < len; ++i) {
         for (int j = 0; j < m; ++j) {
             if (obstacleGrid[i][j] == 1) {
                 f[j] = 0;
                 continue;
             }
             if (j - 1 >= 0 && obstacleGrid[i][j - 1] == 0) {
                 f[j] += f[j - 1];
             }
         }
     }

     return f[m - 1];
 }
算法基础练习(九) 摘要包含三个编程问题解决方案: 观测点划分:将n个坐标点划分为k个连续区域,使总活动范围最大。算法筛选有效坐标后,通过排序间隔并计算最优分割实现,时间复杂度O(nlogn)。 密文解密:对分组密文执行逆向旋转操作恢复明文。通过遍历数组并处理每个完整分组实现,时间复杂度O(N)。 照亮街道:计算最小路灯照亮半径覆盖整条街道。算法排序路灯位置后,计算最大相邻间距和端点距离确定半径,时间复杂度O(nlogn)。 所有解决方案均满足题目要求的时空复杂度约束,正确处理边界条件,并通过了给定测试用例验证。 阅读详情

相关推荐

【算法底座研究室】机器学习基础算法 (九) - AdaBoost

AdaBoost(Adaptive Boosting)是一种强大的集成学习算法,它通过结合多个弱学习器来提高整体模型的准确性。作为一种提升方法,AdaBoost与其他集成方法(如随机森林和梯度提升树)有所不同,特别之处在于其“自适应”特性。AdaBoost的核心思想是通过在每轮训练中加大错误分类样本的权重来提高模型的准确性,从而逐步改进整体模型的性能。在这篇文章中,我们将详细探讨AdaBoost的工作原理、算法步骤、Python实现,并通过一个案例展示如何应用AdaBoost解决分类问题。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1194

Python笔试题之蛇形矩阵:

输入一个正整数N(N不大于100),输出一个n行的蛇形矩阵。 示例输入: 5 示例输出: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 解法一: while True: try: N = int(input()) tmp_begin = 1 # 第一行的数 for i in range(1, N+1): ...

Python_mjj的博客 2253

STM32CubeMX安装避坑指南:为什么你的Java环境总是报错?

本文针对STM32CubeMX安装过程中最常见的Java环境报错问题,提供了一套完整的诊断与解决方案。文章深入剖析了JRE版本冲突、环境变量配置错误、路径权限等核心原因,并给出了从系统级检查到手动修正环境变量的详细步骤,帮助开发者彻底解决安装难题,顺利开启STM32开发之旅。

prometheus9mon的博客 226

螺旋矩阵--给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的n*n正方形矩阵 matrix 。

【代码】螺旋矩阵--给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的n*n正方形矩阵 matrix。

LiuShaoSheng7的博客 971

Argoverse数据集可视化/Argoverse-api

argoverse可视化,argoverse-api配制方法

learning_man的博客 9560

Silvaco 学习笔记——物理模型:载流子产生复合模型

对载流子的复合机制进行总结

reactortiger的博客 1万+

10774: matrix

10774: matrix 题目描述 现在有一个n*m的01矩阵,矩阵的行与行可以互相交换,我们现在想知道在一个最优的交换方案中,其中最大的全1子矩阵能有多大。 输入 第一行两个整数n,m。接下来n行,每行一个长度为m的01字符串,描述这个01矩阵。 输出 一个数,即最大的全1子矩阵面积。 样例输入 复制样例数据 2 2 1...

weixin_30851867的博客 146

数据埋点系列 3|数据质量保证:验证、清洗与管理

数据质量管理是一个持续的过程,需要技术和组织文化的共同支持。通过本文,我们深入探讨了数据质量保证的各个方面,从基本的验证和清洗技术,到高级的监控和自动化策略。主动的而非被动的自动化的而非手动的持续的而非一次性的全面的而非局部的随着数据在决策中的作用越来越重要,确保数据质量将成为每个数据驱动型组织的核心竞争力。通过实施本文中讨论的策略和技术,你将能够建立一个强大的数据质量保证体系,为你的组织带来更可靠、更有价值的数据洞察。

一个8年大数据开发工程师的碎碎念 1464

LEETCODE | PYTHON | 59 | 螺旋矩阵Ⅱ

LEETCODE | PYTHON | 59 | 螺旋矩阵Ⅱ

Angelawlc的博客 165

从零搭建PIC MCU开发环境:MPLAB IDE与HI-TECH编译器安装破解全攻略

本文详细介绍了从零搭建PIC MCU开发环境的完整流程,包括MPLAB IDE 8.85的安装配置、HI-TECH C编译器的安装与破解,以及PICkit3编程器的使用技巧。通过清晰的步骤说明和常见问题解决方案,帮助开发者快速搭建稳定的PIC单片机开发环境,适用于PIC16/18系列MCU开发。

weixin_29188997的博客 292

【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)

在游戏发展史上,有些游戏以其简单而耐玩的特性,深深地烙印在了玩家的记忆中。《黄金矿工》就是其中之一,它曾经在4399等游戏平台上掀起了一股游戏热潮。这款游戏不仅给无数玩家带来了欢乐,还让他们体验到了挖掘金矿的刺激与乐趣。在这个项目中,我们将花费半天的时间,利用Unity引擎,重新打造这款经典小游戏。通过复刻《黄金矿工》,我们不仅是在向童年的回忆致敬,更是在挖掘游戏设计的精髓。在这个过程中,我们将学习如何实现游戏的核心玩法,设计简洁而有效的游戏机制。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2902

编写程序,输入一个正整数n,输入n个数,生成一个n*n的矩阵。其中矩阵中第1行是输入的n个数,以后每一行的内容都是上一行循环左移一个元素构成的。

【代码】编写程序,输入一个正整数n,输入n个数,生成一个n*n的矩阵。其中矩阵中第1行是输入的n个数,以后每一行的内容都是上一行循环左移一个元素构成的。

m0_75107791的博客 2794

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 558

算法设计与分析基础(九)

算法设计与分析基础(九) 练习题 习题一 a. 为一个分治算法编写伪代码,该算法同时求出一个n元素数组的最大元素 和最小元素的值。 b. 假设n = 2k,为该算法的键值比较次数建立递推关系式并求解。 c. 请将该算法与同样问题的蛮力算法做一个比较。 解答: a. 算法思想 将数组A划分为大小大致相等的两个子数组;递归地对这两个子数组求最大元素和最小元素;将两个子数组的最大元素进行比较,返回数组A的最大元素,将其最小元素进行比较,返回数组A的最小元素;当n不超过2时,递归终止,此时最多通过一次比较就可得

BKSW.的博客 2952

MOS管基础知识及应用电路Multisim仿真

本文系统介绍了MOS管的基础知识及其在电子电路中的典型应用。首先详细解析了MOS管的基本结构、分类和工作原理,包括NMOS、PMOS及CMOS的特性差异。重点阐述了MOS管的三种放大组态电路(共源、共漏、共栅)及其小信号模型分析。随后通过Multisim仿真验证了MOS管在防反接电路、开关电路、放大电路、逻辑门电路、电平转换电路和开关电源(BUCK、BOOST、BUCK-BOOST)等应用中的实际表现。文章还深入探讨了自给偏压和分压式偏置电路的设计要点。全文通过理论分析与仿真实验相结合的方式,全面展示了MO

XU157303764的博客 1482

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

九、基础算法——区间合并

区间合并算法

靡不有初 鲜克有终 1447

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

算法基础九:Joseph

Joseph问题 // Joseph's Problem // input: n,m-- the number of persons, the inteval between persons // output:-- return the reference of last person int josephus0(int n,

千寻 825

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2022牛客寒假算法基础集训营1 之 《九小时九个人九扇门》背包dp

牛客原题链接 目录 题目描述 输入描述: 输出描述: 输入 输出 思路: 题目描述 在打越钢太郎的著名解谜游戏系列《极限脱出》的第一作《九小时九个人九扇门》中,有这样一个有趣的设定:游戏中,9位主人公被困在一座大型的豪华巨轮中,每个人手上都有一个奇怪的手表,手表上有一个数字,9个人的数字分别是1−9;在巨轮中,还有很多紧闭的数字门,每扇数字门上也有一个1−9的数字,要想打开数字门逃出生天,主角们必须要满足一个奇怪的条件: k个人能够打开门上数字为ddd的...

m0_61266637的博客 279

从0开始的算法(数据结构和算法)基础(九)

二分查找作为一种高效的搜索算法,在实际的软件工程中有着广泛的应用,特别是在需要快速查找的场景中。要么用时间换取空间,用空间换取时间,还是要看实际情况的,不过现在的情况就是空间便宜,时间成本贵追求效率,大多数时候都牺牲空间。:在用户体验至上的应用中,快速响应是关键,二分查找可以帮助构建高效的搜索功能,使得应用程序响应更快。:在需要频繁查找的场景中,二分查找可以显著减少查找时间,尤其是当数据量非常大且数据是有序的情况下。:作为许多算法的基础,二分查找常用于解决更复杂的问题,例如在数据结构如树、图中进行搜索。

Solidao的博客 1058

2022牛客寒假算法基础集训营1解题记录

2020牛客寒假算法基础集训营第一场比赛的解题记录。原博客链接:http://www.retrogogogo.top/2022/01/26/algorithm/nowcoder/winter2022_1/

retr0的博客 800

机器学习——基础算法(九)

机器学习——基础算法(九) 一、kMeans # !/usr/bin/python # -*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt import sklearn.datasets as ds import matplotlib.colors from sklearn.cluster import ...

qq_41511262的博客 247

JavaScript基础复习(九) 常见JS算法

排序算法 Algorithm Average Best Worst extra space stable 冒泡排序 O(N^2) O(N) O(N^2) O(1) 稳定 直接插入排序 O(N^2) O(N) O(N^2) O(1) 稳定 折半插入排序 O(NlogN) O(NlogN) O(N^2) O(1) 稳定 简单选择排序 O(N^2) O(N^2) O(N^2)...

赵乘风_i 381

机器学习---算法基础(九)聚类算法概述

参考文章: 用于数据挖掘的聚类算法有哪些,各有何优势? 聚类算法 无监督学习算法,将拥有的数据分成几类。 聚类算法的分类与代表算法为: 算法分类 算法含义 常用算法                          层次化聚类算法 透过一种层次架构方式.

qq5024581的博客 449

Python基础学习笔记(九) —— 数据结构与算法

数据结构与算法

hu_wei123的博客 3345

算法基础(九)– 回文链表

回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 提示: 链表中节点数目在范围[1, 105] 内 0 <= Node.val <= 9 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 来源:力扣(LeetCode) 链接:https://leetco.

Flash~ 780

机器学习 算法基础 九 SVM实践

SVM代码实践 这里写自定义目录标题练习1:鸢尾花分类练习2:SVM实现一个多分类器练习3:SVM选用不同核参数练习4:手写数字识别 练习1:鸢尾花分类 #!/usr/bin/python # -*- coding:utf-8 -*- import numpy as np import pandas as pd import matplotlib as mpl import matplotl...

切克闹的博客 228
上一篇: 5、创建高性能的索引
下一篇: 算法基础十
geek-wmy
博客等级 码龄9年 322粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值