Problem Statement
You have a table with N rows and M columns. In a single move, you can go from your current cell to a horizontally or vertically adjacent cell. Moving up from an uppermost cell moves you to the corresponding bottommost cell. Moving down from a bottommost cell moves you to the corresponding uppermost cell. Moving left from a leftmost cell moves you to the corresponding rightmost cell. Moving right from a rightmost cell moves you to the corresponding leftmost cell.
You are currently in the cell at row r1, column c1. Return the minimum number of moves required to get to the cell at row r2, column c2. All indices are 0-based.
Definition
- Class:
- CircularCells
- Method:
- minimumMovements
- Parameters:
- int, int, int, int, int, int
- Returns:
- int
- Method signature:
- int minimumMovements(int N, int M, int r1, int c1, int r2, int c2)
- (be sure your method is public)
Constraints
- N and M will each be between 1 and 1,000,000, inclusive.
- r1 and r2 will each be between 0 and N-1, inclusive.
- c1 and c2 will each be between 0 and M-1, inclusive.
Examples
3
3
0
0
2
2
Returns: 2
The best path is (0,0)->(2,0)->(2,2).
4
6
3
4
2
0
Returns: 3
The best path is (3,4)->(2,4)->(2,5)->(2,0).
479
359
363
320
35
37
Returns: 227
282
828
98
511
209
25
Returns: 453
828
437
153
406
528
53
Returns: 459
293
383
264
185
257
186
Returns: 8
448
727
200
415
338
231
Returns: 322
668
300
431
203
542
235
Returns: 143
323
334
282
111
142
305
Returns: 280
254
869
245
509
212
346
Returns: 196
38
860
18
9
13
123
Returns: 119
317
36
308
0
257
14
Returns: 65
41
943
25
99
16
404
Returns: 314
891
730
807
406
203
280
Returns: 413
394
549
254
477
15
414
Returns: 218
757
841
570
475
563
761
Returns: 293
945
440
748
257
928
426
Returns: 349
119
83
56
19
0
21
Returns: 58
640
659
386
138
330
298
Returns: 216
674
387
200
221
437
377
Returns: 393
271
830
252
117
126
217
Returns: 226
987
291
92
239
870
140
Returns: 308
656
575
494
325
244
6
Returns: 506
942
725
47
657
604
191
Returns: 644
8
338
7
37
7
247
Returns: 128
946
910
614
561
298
359
Returns: 518
423
947
404
314
340
43
Returns: 335
901
592
52
242
754
410
Returns: 367
23783
21607
14787
12893
4921
19117
Returns: 16090
18317
31476
3961
27363
12076
12394
Returns: 23084
23415
18294
3197
4583
8182
5260
Returns: 5662
20000
29374
3541
15514
1469
3908
Returns: 13678
10906
3361
4321
1367
4064
2050
Returns: 940
1893
126
197
63
241
106
Returns: 87
7406
25663
2125
2743
298
19364
Returns: 10869
178
14182
67
9963
142
6579
Returns: 3459
21058
30992
17226
22530
18222
8581
Returns: 14945
32409
4585
27305
2259
1189
84
Returns: 8468
13186
8577
11571
9
7798
1880
Returns: 5644
32764
6295
26034
682
1320
5740
Returns: 9287
16357
9633
14037
2577
11639
4515
Returns: 4336
8273
27453
5427
25781
6871
12365
Returns: 14860
5973
20573
539
3913
1914
14409
Returns: 11452
25906
2109
4054
1811
11098
982
Returns: 7873
28190
17539
24492
4899
951
12432
Returns: 12182
17191
28202
11845
24713
17006
6842
Returns: 15492
21978
20981
1363
15317
12754
915
Returns: 17166
26039
29606
23279
6708
21019
19330
Returns: 14882
124142
124282
744
616
30446
18096
Returns: 47182
100237
104387
806
94
23916
26429
Returns: 49445
101090
103381
123
442
5475
7092
Returns: 12002
124770
128415
483
745
436
14429
Returns: 13731
111600
107410
499
647
3193
138
Returns: 3203
104316
131407
979
6
30225
30736
Returns: 59976
104161
123266
163
821
17637
31535
Returns: 48188
113476
107083
16
714
23561
15075
Returns: 37906
101479
123328
976
701
21238
13509
Returns: 33070
112552
106615
422
686
21268
1300
Returns: 21460
1
1
0
0
0
0
Returns: 0
1
2
0
1
0
0
Returns: 1
1
3
0
1
0
2
Returns: 1
1
4
0
0
0
1
Returns: 1
1
5
0
4
0
1
Returns: 2
2
1
0
0
1
0
Returns: 1
2
2
0
0
0
0
Returns: 0
2
3
0
2
0
1
Returns: 1
2
4
1
3
1
1
Returns: 2
2
5
1
3
0
3
Returns: 1
3
1
0
0
2
0
Returns: 1
3
2
0
0
2
1
Returns: 2
3
3
2
0
2
2
Returns: 1
3
4
1
2
0
2
Returns: 1
3
5
2
4
2
2
Returns: 2
4
1
3
0
1
0
Returns: 2
4
2
0
0
2
0
Returns: 2
4
3
1
1
3
2
Returns: 3
4
4
3
0
2
2
Returns: 3
4
5
3
0
3
1
Returns: 1
5
1
4
0
4
0
Returns: 0
5
2
4
1
1
1
Returns: 2
5
3
0
1
4
2
Returns: 2
5
4
0
2
4
1
Returns: 2
5
5
4
4
3
0
Returns: 2
1000000
1000000
250000
750000
750000
250000
Returns: 1000000