2022-08-26:用一个大小为 m x n 的二维网格 grid 表示一个箱子
你有 n 颗球。箱子的顶部和底部都是开着的。
箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,
可以将球导向左侧或者右侧。
将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。
将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。
在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。
如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。
返回一个大小为 n 的数组 answer ,
其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标,
如果球卡在盒子里,则返回 -1。
输入:grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]。
输出:[1,-1,-1,-1,-1]。

答案2022-08-26:

这道题需要画图,才能找到解决方法。

代码用rust编写。代码如下:

fn main() {
let mut grid: Vec<Vec<i32>> = vec![
vec![1, 1, 1, -1, -1],
vec![1, 1, 1, -1, -1],
vec![-1, -1, -1, 1, 1],
vec![1, 1, 1, 1, -1],
vec![-1, -1, -1, -1, -1],
];
let ans = find_ball(&mut grid);
println!("ans = {:?}", ans);
} fn find_ball(grid: &mut Vec<Vec<i32>>) -> Vec<i32> {
let n = grid.len() as i32;
let m = grid[0].len() as i32;
let mut ans: Vec<i32> = vec![];
for _ in 0..m {
ans.push(0);
}
for col in 0..m {
// (0,0) (0,1) (0,2)
let mut i = 0;
let mut j = col;
while i < n {
// (i,j) 左上 -> 右下的格子 grid[i][j] == 1
// (i+1, j+1)
// (i,j) 右上 -> 左下的格子 grid[i][j] == -1
// (i+1, j-1)
let jnext = j + grid[i as usize][j as usize];
if jnext < 0
|| jnext == m
|| grid[i as usize][j as usize] != grid[i as usize][jnext as usize]
{
ans[col as usize] = -1;
break;
}
i += 1;
j = jnext;
}
if i == n {
ans[col as usize] = j;
}
}
return ans;
}

执行结果如下:


左神java代码

2022-08-26:用一个大小为 m x n 的二维网格 grid 表示一个箱子 你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角, 可以将球导的更多相关文章

  1. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...

  2. 在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行

    package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...

  3. 假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」

    假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 ...

  4. 一个大小为N的数组,里面是N个整数,怎样去除重复的数

    题目:一个大小为N的数组,里面是N个整数,怎样去除重复的数字: 要求时间复杂度为O(n),空间复杂度为O(1). 需要除掉重复的整数的数组,注意这里我没有处理负数情况,其实负数情况只要先用0快排分一下 ...

  5. C用malloc 向系统申请一个大小为n*4个字节的内存块

    #include <stdio.h> #include <malloc.h> void out(int *p, int n){ int i; for(i=0;i<n;i+ ...

  6. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

    如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...

  7. 使用一个for循环将N*N的二维数组的所有值置1

    <?php // 使用一个for循环将N*N的二维数组的所有值置1 $n = ; $a = []; ;$i<$n*$n;$i++){ $a[$i/$n][$i%$n] = ; } prin ...

  8. python 一个函数让你决定你的二维码

    今天浏览网页时无意中看到了一个特别有趣的二维码,感觉挺有意思的,回来后自己查了一下,发现挺简单的,就分享一下,挺有意思的.该函数的主要流程就是MyQR库中的myqr.run()函数,将连接转化为二维码 ...

  9. 一个有用的排序函数,array_multisort(),下面的一个用法是根据二维数组里的一个字段值的大小,对该二维数组进行重新排序

    从二维数组$cashes中取出一列 'store_id'(二维数组中的每个一维数组都有的字段),按照这个的大小排序,对二维数组$caches里面的一维数组进行重新排序 实际应用如下 想让相同部门的排在 ...

  10. 16.按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //分类 package com.bao; public class Shuchu { int[]yi=new int[50]; String[][]er=new String[10][10]; vo ...

随机推荐

  1. 2022安洵杯pwn-babyarm

    首先就是绕过一个简单的变表base64的加密key 然后就是一个类似ret2libc的利用方式,不过没有直接控制r0的gadget 使用的是arm32中万能的gadget from pwn impor ...

  2. Arduino优化 减少重复代码 例2

    Example->Blink: void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUI ...

  3. RPA的价值和优势

    RPA机器人流程自动化(Robotic process automation):能够代替或者协助人类在计算机.RPA手机等数字化设备中完成重复性工作与任务. 只要预先设计好使用规则,RPA就可以模拟人 ...

  4. 声网 Agora 音频互动 MoS 分方法:为音频互动体验进行实时打分

    在业界,实时音视频的 QoE(Quality of Experience) 方法一直都是个重要的话题,每年 RTE 实时互联网大会都会有议题涉及.之所以这么重要,其实是因为目前 RTE 行业中还没有一 ...

  5. 声网 MetaKTV 技术揭秘之“声临其境”:3D 空间音效+空气衰减+人声模糊

    声网近期发布了"MetaChat 元语聊"."MetaKTV"解决方案,致力于提供一种全新的元宇宙互动社交.K 歌方式,其中都提到了"3D 空间音频& ...

  6. 解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext

    解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext 每博一文案 人活着,就得随时准备经受磨难.他已经看过一些书,知道不论是普通人还是了不 ...

  7. SpringBoot——定制错误页面及原理

    更多内容,前往 IT-BLOG 一.SpringBoot 默认的错误处理机制 [1]浏览器返回的默认错误页面如下:  ​☞ 浏览器发送请求的请求头信息如下:text/html 会在后面的源码分析中说到 ...

  8. Vue2数据驱动渲染(render、update)

    上一篇文章我们介绍了 Vue2模版编译原理,这一章我们的目标是弄清楚模版 template和响应式数据是如何渲染成最终的DOM.数据更新驱动视图变化这部分后期会单独讲解 我们先看一下模版和响应式数据是 ...

  9. 一次因生产事故与chatGpt的对话

    一次因生产事故与chatGpt的对话 前言:生产出现了一个内存溢出的事故,记录错误信息.错误日志如下 org.springframework.web.util.NestedServletExcepti ...

  10. Flutter 异步编程指南

    作者:京东物流 王志明 1 Dart 中的事件循环模型 在 App 开发中,经常会遇到处理异步任务的场景,如网络请求.读写文件等.Android.iOS 使用的是多线程,而在 Flutter 中为单线 ...