`

Zenefits Interview - Minimum distance to guarded rooms

 
阅读更多

求每个元素到guaraded room的最短距离

0: closed room

1: open room

2: guarded room

例如input

1 2 1

1 0 1

1 2 1

那么output是

1 0  1.

2 -1 2

1 0  1

 

private static int[][] dir = {{0, -1}, {0, 1}, {1, 0}, {-1, 0}};
public static void minDistance(int[][] R) {
	Queue<Integer> queue = new LinkedList<>();
	int m = R.length, n = R[0].length;
	for(int i=0; i<m; i++) {
		for(int j=0; j<n; j++) {
			if(R[i][j] == 2) {
				queue.offer(i*n+j);
			}
		}
	}
	int OFFSET = 10;
	while(!queue.isEmpty()) {
		int val = queue.poll();
		int r = val / n;
		int c = val % n;
		for(int k=0; k<dir.length; k++) {
			int i = dir[k][0] + r;
			int j = dir[k][1] + c;
			if(i>=0 && i<m && j>=0 && j<n && R[i][j] == 1) {
				R[i][j] = R[r][c] == 2 ? OFFSET+1 : R[r][c]+1;
				queue.offer(i*n+j);
			}
		}
	}
	for(int i=0; i<m; i++) {
		for(int j=0; j<n; j++) {
			if(R[i][j] == 2) {
				R[i][j] = 0;
			} else if(R[i][j] == 0) {
				R[i][j] = -1;
			} else {
				R[i][j] -= OFFSET;
			}
		}
	}
}

public static void main(String[] args) {
	int[][] R = new int[][]{{1,2,1}, {1,0,1}, {1,2,1}};
	minDistance(R);
	for(int i=0; i<R.length; i++) {
		System.out.println(Arrays.toString(R[i]));
	}
}

 

分享到:
评论

相关推荐

    heroku-destroy-temp:Heroku CLI插件可销毁临时应用

    3. guarded-journey-99652 4. floating-atoll-86710 5. obscure-anchorage-63377 Destroy these 5 apps? (y/n): y destroying apps... done 安装 $ heroku plugins:install heroku-destroy-temp

    scalac-guardedblocks-plugin:简单的Scala编译器插件

    `scalac-guardedblocks-plugin`就是这样一个插件,它专注于在Scala代码中引入一种新的语法结构,以增强代码的安全性和可读性。 **什么是`scalac-guardedblocks-plugin`** `scalac-guardedblocks-plugin`是一个针对...

    Laravel开发-eloquent-base-model

    - `protected $guarded`:黑名单模式,指定除了这些字段外的所有字段都可以被批量赋值。 2. **属性访问器和修改器**: - 属性访问器(Getters)允许你在获取属性值时进行转换或处理。 - 属性修改器(Setters)在...

    laravel中的fillable和guarded属性详解

    在创建和更新模型时,`fillable` 和 `guarded` 属性是两个非常重要的概念,它们控制着如何通过 `create` 和 `update` 方法批量赋值模型属性。 首先,我们来看 `fillable` 属性。`fillable` 被称为白名单,它定义了...

    guarded-array:边界检查数组

    var guard = require ( 'guarded-array' ) //First create any old array var array = [ 0 , 1 , 2 , 3 , 4 , 5 ] //Then we protect it using guard! var guardedArray = guard ( array ) //The guarded array ...

    guarded-bayou-7383

    JAX-RS 模板应用程序这是使用 JAX-RS 的轻量级 RESTful API 的模板。 示例代码是获取当前时间的调用。在本地运行应用程序首先构建: $mvn clean install然后运行它: $ java -cp target/classes:target/dependency/*...

    butterknife 8.8.0

    butterknife butterknife-annotations butterknife-compiler butterknife-gradle-plugin ...Fix: Correct @BindFont code generation on pre-API 26 builds to pass a Context (not a Resources) to ResourceCompat.

    《Java Concurrency in Practice》代码示例

    - **@GuardedBy("lock")**:指出某个字段或方法必须在持有指定锁的情况下访问,以保证并发安全。 - **@LazyInit**:标记一个字段应该延迟初始化,以避免在多线程环境下的竞态条件。 通过这些代码示例和注解,读者...

    guarded-string:防止在应用程序中意外地在字符串中引入XSSKong

    yarn add guarded-string 用法 重要的! 应该将其用于防止XSS攻击之类的东西,而不是用于隐藏敏感信息。 import guardedString from 'guarded-string' ; const myString = guardedString `My very important (but ...

    微软内部资料-SQL性能优化3

    An isolation level determines the degree to which data is isolated for use by one process and guarded against interference from other processes. Prior to SQL Server 7.0, REPEATABLE READ and ...

    程序语言设计原理习题解答

    8.5 Guarded Commands 367 8.6 Conclusions 371 Summary • Review Questions • Problem Set •Programming Exercises 372 Chapter 9 Subprograms 377 9.1 Introduction 378 9.2 Fundamentals of ...

    Laravel开发-eloquent-models

    此外,Eloquent还支持关系操作,如一对一(hasOne)、一对多(hasMany)、多对一(belongsTo)和多对多(belongsToMany)等。这使得处理复杂的数据库关联变得轻松。例如,一个用户有多个帖子: ```php // 在User...

    Laravel开发-attribute-purging

    要实现attribute purging,Laravel提供了两个主要的方法:`$fillable`和`$guarded`。这两个属性用于定义模型可以接受哪些字段进行填充,以及需要排除哪些字段。 1. **$fillable**: - `$fillable`数组是用来白名单...

    逻辑编程语言:GHC (Guarded Horn Clauses).zip

    史上最全编程语言全套教程,共99门编程语言,包括: 函数式编程语言 壳编程语言 常见编程语言 并行编程语言 数据分析编程语言 数据库查询语言 系统编程语言 脚本编程语言 逻辑编程语言 面向对象编程语言 ...

    Understanding_Ipv6

    These details are highly guarded Microsoft intellectual property that is of interest only to a relative handful of software developers. The purpose of this book is to provide an educational vehicle...

    Laravel开发-model

    return $this-&gt;belongsTo('App\Models\User'); } ``` 六、访问器与修改器 访问器用于修改模型属性的获取方式,修改器则用于修改保存到数据库前的值。例如,添加一个`getNameAttribute`访问器: ```php public ...

    Laravel开发-eloquent-user

    在`User`模型中,我们可以定义一些属性,如`$table`来指定模型对应的表名,`$fillable`或`$guarded`来控制数据填充的安全性,以及`$dates`来声明时间戳字段。默认情况下,Laravel会假设模型的表名为模型类名的复数...

    understanding IPv6

    These details are highly guarded Microsoft intellectual property that is of interest only to a relative handful of software developers. The purpose of this book is to provide an educational vehicle...

    Laravel开发-laravel-model-generator

    生成的模型类会继承自Laravel的`Illuminate\Database\Eloquent\Model`基类,包含了基本的属性和方法,如`$table`定义了模型对应的数据库表名,`$fillable`和`$guarded`用于设置数据填充的安全策略,以及`timestamps`...

Global site tag (gtag.js) - Google Analytics