当前位置: 代码迷 >> 综合 >> 第52周 ARTS 2019 10 13
  详细解决方案

第52周 ARTS 2019 10 13

热度:39   发布时间:2023-12-10 02:36:59.0

Algorithm:1219. 黄金矿工
Review:
Tip/Tech:
Share:

Algorithm

1219 黄金矿工

https://leetcode-cn.com/problems/path-with-maximum-gold
在这里插入图片描述
和单词的搜索的思想是一致的。首先遍历的每个单词,然后以每个点进行深度优先搜索。

  1. 每次都判断这个点是否可以挖矿,两个条件:挖过了没?有没有矿?如果有,就把临时的值加上能挖到矿物的产量。
  2. 以当前的点为起点,分别从四个方向重复步骤1),返回四个方向中最大那个。
    结束遍历后返回答案,最大的矿。
    如果有点难以理解,没事直接来看代码吧。。
    注意递归的时候,要有退出条件和循环条件哦。
    Show The Code
class Solution {
    private int ans = Integer.MIN_VALUE;private int rowSize = 0;private int columnSize = 0;public int getMaximumGold(int[][] grid) {
    if (grid == null || grid.length == 0 || grid[0].length == 0) {
    return 0;}rowSize = grid.length;columnSize = grid[0].length;boolean[][] visited = new boolean[grid.length][grid[0].length];for (int i = 0; i < rowSize; ++i) {
    for (int j = 0; j < columnSize; ++j) {
    dfs(i, j, 0, grid, visited);}}return ans;}public int dfs(int rowIndex, int columnIndex, int temp, int[][] grid, boolean[][] visited) {
    if (rowIndex >= rowSize || columnIndex >= columnSize || rowIndex < 0 || columnIndex < 0 || grid[rowIndex][columnIndex] == 0 || visited[rowIndex][columnIndex]) {
    return temp;}visited[rowIndex][columnIndex] = true;temp += grid[rowIndex][columnIndex];int temp1 = dfs(rowIndex + 1, columnIndex, temp, grid, visited);int temp2 = dfs(rowIndex - 1, columnIndex, temp, grid, visited);int temp3 = dfs(rowIndex, columnIndex + 1, temp, grid, visited);int temp4 = dfs(rowIndex, columnIndex - 1, temp, grid, visited);visited[rowIndex][columnIndex] = false;int maxTemp = Math.max(temp1, Math.max(temp2, Math.max(temp3, temp4)));ans = Math.max(ans, maxTemp);return maxTemp;}
}

Review

The Structure of the The Multiprogramming System

这篇论文是看《操作系统概论》的时候看到的一篇论文,这篇论文中提到了操作系统分层的概念。
他把操作系统分成了level0~level5
Level0:把处理器分配的职责就是分配给动态进程一些逻辑权限,进行逻辑操作?(硬件)。就是把程序合理拆分成各种任务给CPU。
Level1:存储临时信息,功能看起来有点像寄存器。这里(硬件)
Level2:这个好像是个用户空间的概念,这个是在每个进程都有自己的一个专用的对话控制台?是用来和CPU和缓存啊这些打交道的,这一层感觉是个虚拟的概念。
Level3:输入流输出流。IO层。
Level4:这一层是面向用户的程序的。
Level5:这是面向操作员的,用今天的话来说,就是电脑使用者(可以是玩家,工作人员等等)。

Tip/Tech

基于链表实现 LRU 缓存淘汰算法

思路:
我们维护一个有序单链表,越靠近链表尾部的结点是越早出现的数据。当有一个新的数据出现的时候,我们从链表头开始顺序遍历链表。
有以下两种情况:
1 )找到了数据,也就是,已经存在了数据了,那么就把找到的点删除,搬移到链表头的位置
2 )没有找到:因为一般LRU这种数据结构都有长度限制也分成两种情况:
- 链表未满:直接插入到头部
- 链表满了:把末尾的删除,然后插入头部。

Share

https://www.economist.com/science-and-technology/2019/08/31/new-ways-to-make-vertical-farming-stack-up

New ways to make vertical farming stack up

垂直农业的新方法

在这里插入图片描述
这个看起来真的挺酷的,这个让我想起了未来,农田搬进城市大楼,可以用很少的种植面积培养出大量的食物。
而且这个占地面积看起来并不大,大概是一个床的面积吧,其实可以放在家里,如果可行的话,以后每个人都可以吃上自己种植的大米了。
家庭农场的概念也许不远的将来真的可以实现。
可以种菜,种花生,种西瓜。。哈哈哈。