当前位置: 首页 > news >正文

【滑动窗口、矩阵】算法例题

目录

 三、滑动窗口

30. 长度最小的子数组 ②

31. 无重复字符的最长子串 ②

32. 串联所有单词的子串 ③

33. 最小覆盖子串 ③

四、矩阵

34. 有效的数独 ②

35. 螺旋矩阵 ②

36. 旋转图像 ②

37. 矩阵置零 ②

38. 生命游戏 ②


 三、滑动窗口

30. 长度最小的子数组 ②

 给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3]是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105

力扣题解:. - 力扣(LeetCode)

方法1:时间超时(通过15/18)

    public int minSubArrayLen(int target, int[] nums) {int min = nums.length + 1;for (int i = 0; i < nums.length; i++) {int sum = 0;int left = i;sum += nums[left];int right = i + 1;while (right < nums.length && sum < target){sum += nums[right];right++;}if (sum >= target && min > right - left){min = right - left;}}return min == nums.length + 1? 0 : min;}

方法2:(0ms)

    public int minSubArrayLen(int target, int[] nums) {int l = 0, r = 0;int n = nums.length;int sum = 0;while(r < n && sum < target)sum += nums[r++];if(r == n)if (sum < target)return 0;else{while(sum > target)sum -= nums[l++];}while(r < n){if(sum < target) sum += nums[r++];sum -= nums[l++];}if(sum < target) return r-l+1;return r -l;}

方法3:

    public int minSubArrayLen(int target, int[] nums) {int lo = 0, hi = 0, sum = 0, min = Integer.MAX_VALUE;while (hi < nums.length) {sum += nums[hi++];while (sum >= target) {min = Math.min(min, hi - lo);sum -= nums[lo++];}}return min == Integer.MAX_VALUE ? 0 : min;}

 方法4:(2ms)

    public int minSubArrayLen(int target, int[] nums) {int left = 0;int res = Integer.MAX_VALUE;int add = 0;for (int right = 0; right < nums.length; right++) {add += nums[right];while (add >= target) {res = Math.min(res, right - left + 1);add -= nums[left];++left;}}return res > nums.length ? 0 : res;}

31. 无重复字符的最长子串 ②

 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

方法1:(7ms)

    public static int lengthOfLongestSubstring(String s) {TreeSet<Integer> set = new TreeSet<>();if (s.length() == 0){return 0;}else if (s.length() == 1){return 1;}else {int left = 0;int right = 1;while (right < s.length()){String substring = s.substring(left, right);if (substring.contains(s.charAt(right) + "")){set.add(right - left);left = s.indexOf(s.charAt(right), left) + 1;}else {if (right == s.length() - 1) {set.add(right - left + 1);break;}}right++;}return set.last();}}

方法2:(滑动窗口  5ms)

    public int lengthOfLongestSubstring(String s) {if (s.length()==0) return 0;HashMap<Character, Integer> map = new HashMap<Character, Integer>();int max = 0;int left = 0;for(int i = 0; i < s.length(); i ++){if(map.containsKey(s.charAt(i))){left = Math.max(left,map.get(s.charAt(i)) + 1);}map.put(s.charAt(i),i);max = Math.max(max,i-left+1);}return max;}作者:powcai
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/3982/hua-dong-chuang-kou-by-powcai/

32. 串联所有单词的子串 ③

33. 最小覆盖子串 ③

四、矩阵

34. 有效的数独 ②

 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)

注意:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 空白格用 '.' 表示。

示例 1:

输入:board = 
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:true

示例 2:

输入:board = 
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
输出:false
解释:除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。 但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

提示:

  • board.length == 9
  • board[i].length == 9
  • board[i][j] 是一位数字(1-9)或者 '.'

方法1:

    public static boolean isValidSudoku(char[][] board) {String[] rows = new String[9];String[] columns = new String[9];String[] areas = new String[9];for (int i = 0; i < 9; i++) {if (rows[i] == null){rows[i] = "a";}for (int j = 0; j < 9; j++) {if (columns[j] == null){columns[j] = "a";}if (rows[i].contains(board[i][j] + "")){return false;}else if (board[i][j] != '.' && !rows[i].contains(board[i][j] + "")){rows[i] += board[i][j];}if (columns[j].contains(board[i][j] + "")){return false;}else if (board[i][j] != '.' && !columns[j].contains(board[i][j] + "")){columns[j] += board[i][j];}int row = i / 3; // 0 1 2int column = j / 3; //0 1 2int area = row * 3 + column;if (areas[area] == null){areas[area] = "a";}if (areas[area].contains(board[i][j] + "")){return false;}else  if (board[i][j] != '.' && !areas[area].contains(board[i][j] + "")){areas[area] += board[i][j];}}}return true;}

方法2:(0ms)

    public boolean isValidSudoku(char[][] board) {short[] rows = new short[9];short[] cols = new short[9];short[] squares = new short[9];for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] != '.') {short value = (short)(1 << (board[i][j] - '0'));int boxNum = i / 3 * 3 + j / 3;if ((rows[i] & value) != 0 || (cols[j] & value) != 0 || (squares[boxNum] & value) != 0) {return false;}rows[i] |= value;cols[j] |= value;squares[boxNum] |= value;}}}return true;}

方法3:(1ms)

    public boolean isValidSudoku(char[][] board) {int[] rows = new int[9];int[] cols = new int[9];int[] subboxes = new int[9];for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {char c = board[i][j];if (c != '.') {int x = (1 << (c - '1'));if ((rows[i] & x) != 0) {return false;} else {rows[i] |= x;}if ((cols[j] & x) != 0) {return false;} else {cols[j] |= x;}if ((subboxes[i / 3 * 3 + j / 3] & x) != 0) {return false;} else {subboxes[i / 3 * 3 + j / 3] |= x;}}}}return true;}

方法4:(2ms)

    public boolean isValidSudoku(char[][] board) {            int[][] row = new int[9][9]; // 行int[][] columns = new int[9][9]; // 列int[][][] a = new int[3][3][9];for (int i = 0; i < 9; i++) {Set<Character> set = new HashSet<>();for (int j = 0; j < 9; j++) {char c = board[i][j];if (c != '.') {row[i][c - 49]++;columns[j][c - 49]++;a[i / 3][j / 3][c - 49]++;if (row[i][c - 49] > 1 || columns[j][c - 49] > 1 || a[i / 3][j / 3][c - 49] > 1) {return false;}}}}return true;}

35. 螺旋矩阵 ②

 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

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

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 10
  • -100 <= matrix[i][j] <= 100

方法1:(0ms)

    public static List<Integer> spiralOrder(int[][] matrix) {int[][] path = new int[matrix.length][matrix[0].length];int step = 0;ArrayList<Integer> list = new ArrayList<>();int row = 0;int col = 0;int direct = 0;while (step < matrix.length * matrix[0].length){list.add(matrix[row][col]);path[row][col] = 1;if (direct == 0){col++;if (col == matrix[0].length || path[row][col] == 1){direct = 1;col--;row++;}}else if (direct == 1){row++;if (row == matrix.length || path[row][col] == 1){direct = 2;row--;col--;}}else if (direct == 2){col--;if (col == -1 || path[row][col] == 1){direct = 3;col++;row--;}}else {row--;if (row == 0 || path[row][col] == 1){direct = 0;row++;col++;}}step++;}return list;}

方法2:(0ms)

   public List<Integer> spiralOrder(int[][] matrix) {int m = matrix.length, n = matrix[0].length;List<Integer> res = new ArrayList<>();int u = 0, d = m - 1, l = 0, r = n - 1;while (true) {for (int i = l; i <= r; i ++) res.add(matrix[u][i]);if (++u > d) break;for (int i = u; i <= d; i ++) res.add(matrix[i][r]);if (--r < l) break;for (int i = r; i >= l; i --) res.add(matrix[d][i]);if (--d < u) break;for (int i = d; i  >= u; i --) res.add(matrix[i][l]);if (++l > r) break;}return res; }

36. 旋转图像 ②

 给定一个 × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:

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

示例 2:

输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

方法1:(0ms)

    public static void rotate(int[][] matrix) {int n = matrix.length;int row = 0;int col = n - 1;int index = 0;while (row < col){while (row + index < col) {int leftUp = matrix[row][row + index];int rightUp = matrix[row + index][col];int rightDown = matrix[col][col - index];int leftDown = matrix[col - index][row];matrix[row][row + index] = leftDown;matrix[row + index][col] = leftUp;matrix[col][col - index] = rightUp;matrix[col - index][row] = rightDown;index++;}index = 0;row++;col--;}}

37. 矩阵置零 ②

 给定一个 m x n 的矩阵,如果一个元素为 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

示例 1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

提示:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -231 <= matrix[i][j] <= 231 - 1

进阶:

  • 一个直观的解决方案是使用  O(mn) 的额外空间,但这并不是一个好的解决方案。
  • 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
  • 你能想出一个仅使用常量空间的解决方案吗?

方法1:

    public void setZeroes(int[][] matrix) {TreeSet<Integer> rowSet = new TreeSet<>();TreeSet<Integer> columnSet = new TreeSet<>();for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[0].length; j++) {if (matrix[i][j] == 0){rowSet.add(i);columnSet.add(j);}}}for (int i = 0; i < matrix.length; i++) {if (rowSet.contains(i)){Arrays.fill(matrix[i], 0);}}for (int i = 0; i < matrix[0].length; i++) {if (columnSet.contains(i)){for (int j = 0; j < matrix.length; j++) {matrix[j][i] = 0;}}}}

方法2:

    public void setZeroes(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;// 统计行列是否需要置为0 空间复杂度 O(m+n)boolean[] zeroRow = new boolean[m];boolean[] zeroCol = new boolean[n];for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(matrix[i][j] == 0){zeroRow[i] = true;zeroCol[j] = true;}}}for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(zeroRow[i] || zeroCol[j]) {matrix[i][j] = 0;}}}}

38. 生命游戏 ②

 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  1. 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  2. 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  3. 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  4. 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;

下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

示例 1:

输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]

示例 2:

输入:board = [[1,1],[1,0]]
输出:[[1,1],[1,1]]

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 25
  • board[i][j] 为 0 或 1

进阶:

  • 你可以使用原地算法解决本题吗?请注意,面板上所有格子需要同时被更新:你不能先更新某些格子,然后使用它们的更新后的值再更新其他格子。
  • 本题中,我们使用二维数组来表示面板。原则上,面板是无限的,但当活细胞侵占了面板边界时会造成问题。你将如何解决这些问题?

方法1:(0ms)

    public static void gameOfLife(int[][] board) {int[][] map = new int[board.length][board[0].length];for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {int row = Math.max(i - 1, 0);int col = Math.max(j - 1, 0);int src = board[i][j];int count = 0;while (row < board.length && col < board[0].length){count += board[row][col];col++;if (col == j + 2 || col == board[0].length){row++;col = Math.max(j - 1, 0);}if (row == i + 2 || row == board.length){break;}}count -= src;if (src == 1 && count == 1) {map[i][j] = 0;}else if (src == 1 && (count == 2 || count == 3)){map[i][j] = 1;}else if (src == 1 && count > 3){map[i][j] = 0;}else if (src == 0 && count == 3){map[i][j] = 1;}}}
//        board = map;
//        for (int[] ints : board) {
//            System.out.println(Arrays.toString(ints));
//        }for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {board[i][j] = map[i][j];}}}

相关文章:

【滑动窗口、矩阵】算法例题

目录 三、滑动窗口 30. 长度最小的子数组 ② 31. 无重复字符的最长子串 ② 32. 串联所有单词的子串 ③ 33. 最小覆盖子串 ③ 四、矩阵 34. 有效的数独 ② 35. 螺旋矩阵 ② 36. 旋转图像 ② 37. 矩阵置零 ② 38. 生命游戏 ② 三、滑动窗口 30. 长度最小的子数组 ② 给…...

【事务】开发用到的事务,TransactionDefinition实例详解,事务的传播机制

【事务】开发中用到的事务&#xff0c;TransactionDefinition实例详解 一、TransactionDefinition 介绍1、隔离级别&#xff08;Isolation Level&#xff09;&#xff1a;2、传播行为&#xff08;Propagation Behavior&#xff09;&#xff1a;3、超时设置&#xff08;Timeout …...

Linux信号处理

Linux信号处理 什么是linux信号 本质是一种通知机制&#xff0c;用户 or 操作系统通过发送一定的信号&#xff0c;通知进程&#xff0c;某些事情已经发生&#xff0c;你可以在后续进行处理。 信号产生是随机的&#xff0c;进程可能正在忙自己的事情&#xff0c;所以&#xf…...

nuclei使用方法

nuclei使用方法 查看帮助 nuclei -h 列出所有模板 nuclei -tl 查找某种cms的相关漏洞模板&#xff0c;wordpress为例 nuclei -tl -tc "contains(name,wordpress)"便会列出内容里含有wordpress关键字的漏洞检测模板 使用与某cms相关的所有漏洞模板进行扫描&#…...

【并查集专题】【蓝桥杯备考训练】:网络分析、奶酪、合并集合、连通块中点的数量、格子游戏【已更新完成】

目录 1、网络分析&#xff08;第十一届蓝桥杯省赛第一场C A组/B组&#xff09; 2、奶酪&#xff08;NOIP2017提高组&#xff09; 3、合并集合&#xff08;模板&#xff09; 4、连通块中点的数量&#xff08;模板&#xff09; 5、格子游戏&#xff08;《信息学奥赛一本通》…...

数据结构(三)复杂度的深层次剖析

之前发布了数据结构&#xff08;一&#xff09;&#xff0c;很多同学反响不够清晰&#xff0c;那今天就发一篇对复杂度专题的博客&#xff0c;希望对大家理解复杂度提供一些帮助。 时间复杂度 我们先来一个理解一个复杂度&#xff0c;二分查找的复杂度&#xff08;之前写过二…...

JavaWeb -- HTTP -- WEB服务器TOMCAT

一.HTTP介绍: HTTP(Hyper Text Protocol) 实际上是一种超文本传输的协议,规定了浏览器跟服务器之间的一些数据传输的规则 例如B/S 对于浏览器的请求,以及相应服务器的响应,都必须依靠这种协议,规范,才能够彼此之间相互 理解 HTTP的协议特点: 1.基于TCP协议: 面向连接 更加安全…...

GitHub与Git命令使用笔记

GitHub与Git命令使用笔记 文章目录 GitHub与Git命令使用笔记上传本地的新项目到github1. 创建新的GitHub仓库2. 初始化本地项目目录3. 将本地仓库关联到GitHub4. 推送本地代码到GitHub上传本地项目到GitHub时发生冲突 将默认分支名称从master改为maingit 把远程项目拉到本地&am…...

二叉树的层次遍历经典问题-算法通关村

二叉树的层次遍历经典问题-算法通关村 1 层次遍历简介 广度优先在面试里出现的频率非常高&#xff0c;整体属于简单题。广度优先又叫层次遍历&#xff0c;基本过程如下&#xff1a; 层次遍历就是从根节点开始&#xff0c;先访问根节点下面一层全部元素&#xff0c;再访问之后…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(十二)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十一&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十三&#xff09; 48、sqlite3_stmt_isexplain sqlite3_stmt_is…...

大模型时代如何做安全?

现在应该没人怀疑AI时代的到来了吧&#xff0c;在HUB上每天100的新的预训练模型产生&#xff0c;不夸张的说的&#xff0c;现在稍微有点计算机基础的人都可以训练自己的模型了。 说远了&#xff0c;还是说说那些不争气的安全厂商吧。为啥只说安全厂商&#xff1f;因为国内还是…...

新型储能是什么,储能系统解决方案现状及趋势详细说明

新型储能是指新兴的能够存储电能并在需要时释放的储能技术。其中主要包括光伏储能和商业储能。 光伏储能是指通过光伏电池将太阳能转化为电能&#xff0c;并将其存储起来以供后续使用。光伏储能系统一般由太阳能电池板、储能装置和逆变器组成。光伏储能可以将白天产生的电能存…...

掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)

在Go语言中&#xff0c;字典通常指的是map类型&#xff0c;它是一种用于存储键值对的数据结构。字典在Go中非常常见&#xff0c;是一种高效的数据结构&#xff0c;用于快速查找和检索数据。 字典的详细使用方法 创建字典 可以使用make函数来创建字典&#xff0c;并指定键值对…...

Flutter-仿携程首页类型切换

效果 唠叨 闲来无事&#xff0c;不小心下载了携程app&#xff0c;还幻想可以去旅游一番&#xff0c;奈何自己运气不好&#xff0c;自从高考时第一次吹空调导致自己拉肚子考试&#xff0c;物理&#xff0c;数学考了一半就交卷&#xff0c;英语2B铅笔除了问题&#xff0c;导致原…...

C语言 自定义类型:结构体

目录 前言 一、结构体类型 1.1 结构体的声明 1.2 结构体变量的创建和初始化 1.3 结构体的特殊声明 1.4 结构体的自引用 二、结构体的对齐 2.1 对齐规则 2.2 内存对齐的原因 2.3 修改默认对齐数 2.4 结构体传参 三、结构体实现位段 3.1 位段的内存分配 3.2 段的跨平…...

计算机网络拓扑结构

目录 <网络拓扑结构概念> <典型的拓扑结构介绍> 第一种&#xff0c;总线型网络拓扑结构 第二种&#xff0c;星型网络拓扑结构 第三种&#xff0c;树型网络拓扑结构 第四种&#xff0c;环型网络拓扑结构 第五种&#xff0c;网状型网络拓扑结构 第六种&#…...

FPGA通过I2C控制AT24C64

文章目录 前言一、代码设计框图二、IIC_drive模块设计2.1、模块接口&#xff1a;2.2、代码功能描述&#xff1a;2.3、IIC协议实现过程&#xff1a; 三、EEPROM_ctrl模块设计3.1、模块接口&#xff1a;3.2、代码功能描述 四、EEPROM_drive模块五、iic_top模块 前言 继上一篇FPG…...

134. 加油站(力扣LeetCode)

文章目录 134. 加油站题目描述暴力枚举&#xff08;超时&#xff09;代码一代码二&#xff08;优化&#xff09; 贪心算法方法一方法二 134. 加油站 题目描述 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&…...

XSKY 智能存储,助力“数据要素 X”先进制造

3 月 21-22 日&#xff0c;主题为“突破 智行”的 IMC2024 第七届中国智造数字科技峰会在重庆召开。作为在先进制造领域拥有领先存储解决方案以及众多应用实践的企业&#xff0c;星辰天合受邀参加了此次峰会并荣获大会颁发的“最佳存储解决方案奖”。同时&#xff0c;星辰天合先…...

数据挖掘与分析学习笔记

一、Numpy NumPy&#xff08;Numerical Python&#xff09;是一种开源的Python库&#xff0c;专注于数值计算和处理多维数组。它是Python数据科学和机器学习生态系统的基础工具包之一&#xff0c;因为它高效地实现了向量化计算&#xff0c;并提供了对大型多维数组和矩阵的支持…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...