Problem Statement
You have an array with N elements. Initially, each element is 0. You can perform the following operations:
- Increment operation: Choose one element of the array and increment the value by one.
- Doubling operation: Double the value of each element.
You are given a
Definition
- Class:
- IncrementAndDoubling
- Method:
- getMin
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int getMin(int[] desiredArray)
- (be sure your method is public)
Constraints
- desiredArray will contain between 1 and 50 elements, inclusive.
- Each element of desiredArray will be between 0 and 1,000, inclusive.
Examples
{2, 1}
Returns: 3
One of the optimal solutions is to apply increment operations to element 0 twice and then to element 1 once. Total number of operations is 3.
{16, 16, 16}
Returns: 7
The optimum solution looks as follows. First, apply an increment operation to each element. Then apply the doubling operation four times. Total number of operations is 3+4=7.
{100}
Returns: 9
{0, 0, 1, 0, 1}
Returns: 2
Some elements in desiredArray may be zeros.
{123, 234, 345, 456, 567, 789}
Returns: 40
{7,5,8,1,8,6,6,5,3,5,5,2,8,9,9,4,6,9,4,4,1,9,9,2,8,4,7,4,8,8,6,3,9,4,3,4,5,1,9,8,3,8,3,7,9,3,8,4,4,7}
Returns: 84
{2}
Returns: 2
{4}
Returns: 3
{5}
Returns: 4
{12}
Returns: 5
{22}
Returns: 7
{56}
Returns: 8
{91}
Returns: 11
{139}
Returns: 11
{484}
Returns: 13
{725}
Returns: 15
{210, 236, 258}
Returns: 19
{642, 424, 49, 124}
Returns: 24
{314, 667, 264, 929, 353}
Returns: 31
{764, 204, 555, 239, 148, 706}
Returns: 39
{503, 159, 241, 843, 77, 156, 329}
Returns: 46
{14, 6, 9}
Returns: 10
{26, 31, 25, 11}
Returns: 18
{42, 22, 35, 52, 23}
Returns: 21
{3, 37, 54, 98, 64, 120}
Returns: 23
{233, 218, 36, 40, 133, 81, 116}
Returns: 31
{2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 2}
Returns: 51
{2, 3, 4, 3, 3, 3, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 3, 2, 2, 2, 4, 3, 3, 2, 2, 4, 2, 2, 2, 3, 2, 4, 3, 4, 2, 3, 2, 3, 4, 3, 4, 2, 3, 4, 4, 2, 4, 4, 4}
Returns: 65
{5, 5, 8, 7, 5, 5, 4, 6, 8, 4, 5, 4, 6, 6, 4, 6, 5, 7, 8, 5, 8, 4, 4, 6, 5, 5, 5, 5, 7, 6, 5, 5, 7, 7, 6, 4, 4, 4, 7, 6, 8, 4, 6, 4, 4, 7, 8, 4, 8, 8}
Returns: 89
{9, 12, 11, 14, 14, 11, 16, 11, 13, 14, 10, 9, 11, 11, 10, 12, 12, 15, 10, 11, 10, 9, 11, 9, 16, 16, 12, 11, 14, 16, 13, 15, 13, 11, 9, 12, 13, 8, 8, 15, 8, 13, 12, 15, 10, 12, 15, 8, 11, 11}
Returns: 126
{29, 19, 27, 26, 22, 31, 31, 18, 27, 26, 29, 29, 25, 23, 19, 28, 29, 18, 26, 29, 16, 21, 19, 24, 17, 21, 27, 23, 24, 21, 18, 23, 18, 32, 18, 17, 16, 28, 30, 24, 29, 17, 17, 21, 21, 29, 18, 23, 24, 19}
Returns: 154
{36, 63, 34, 40, 43, 41, 47, 33, 38, 48, 56, 57, 51, 62, 34, 38, 62, 49, 53, 52, 37, 60, 32, 50, 34, 37, 36, 61, 42, 59, 58, 64, 35, 45, 52, 49, 56, 41, 63, 50, 61, 64, 61, 32, 55, 32, 63, 33, 47, 48}
Returns: 170
{110, 85, 91, 101, 118, 124, 73, 114, 121, 120, 119, 104, 80, 106, 82, 114, 80, 119, 91, 126, 89, 78, 120, 114, 78, 82, 119, 80, 92, 120, 81, 68, 70, 79, 65, 126, 115, 83, 125, 93, 125, 101, 87, 124, 106, 119, 98, 70, 106, 65}
Returns: 213
{146, 255, 202, 165, 202, 206, 186, 184, 185, 137, 187, 255, 234, 159, 226, 130, 186, 201, 254, 160, 203, 151, 130, 178, 224, 158, 154, 139, 136, 180, 253, 250, 157, 224, 199, 235, 140, 135, 222, 201, 194, 212, 235, 172, 244, 194, 151, 242, 205, 176}
Returns: 231
{303, 394, 382, 298, 407, 337, 384, 290, 317, 308, 442, 436, 487, 401, 480, 277, 381, 259, 380, 439, 323, 475, 353, 433, 258, 464, 421, 289, 330, 282, 292, 475, 396, 504, 347, 359, 283, 312, 449, 352, 383, 491, 415, 395, 464, 471, 446, 321, 278, 358}
Returns: 254
{750, 735, 689, 977, 924, 711, 837, 955, 652, 935, 651, 888, 555, 608, 948, 719, 734, 591, 540, 764, 581, 522, 544, 552, 677, 868, 949, 933, 645, 656, 727, 935, 653, 570, 808, 713, 869, 807, 714, 878, 541, 874, 994, 655, 961, 924, 585, 734, 827, 818}
Returns: 283
{685, 655, 114, 407, 212, 7, 161, 524, 200, 298, 142, 591, 407, 551, 260, 312, 894, 758, 936, 705, 822, 660, 652, 624, 69, 122, 932, 970, 911, 51, 598, 239, 827, 124, 974, 505, 926, 500, 969, 530, 413, 981, 509, 92, 555, 161, 278, 259, 886, 381}
Returns: 264
{0, 755, 905, 371, 867, 594, 581, 166, 449, 588, 702, 251, 960, 669, 97, 348, 298, 681, 763, 654, 7, 986, 845, 997, 829, 257, 102, 861, 255, 217, 45, 717, 372, 889, 375, 945, 760, 225, 553, 229, 268, 8, 141, 211, 234, 748, 992, 480, 271, 401}
Returns: 259
{351, 126, 469, 754, 634, 934, 35, 188, 153, 528, 474, 575, 125, 397, 710, 597, 624, 235, 485, 639, 691, 6, 545, 918, 902, 55, 56, 104, 384, 741, 707, 326, 669, 757, 316, 628, 763, 997, 491, 950, 348, 898, 359, 18, 364, 460, 743, 587, 341, 265}
Returns: 267
{849, 174, 389, 560, 640, 838, 837, 708, 968, 483, 539, 730, 722, 315, 733, 791, 130, 671, 803, 446, 79, 830, 834, 334, 467, 852, 159, 767, 534, 61, 310, 25, 638, 652, 666, 494, 148, 909, 923, 654, 233, 406, 422, 96, 344, 735, 627, 280, 194, 764}
Returns: 265
{862, 933, 642, 85, 742, 504, 954, 702, 368, 717, 319, 559, 497, 960, 413, 141, 81, 914, 422, 894, 541, 166, 177, 725, 271, 821, 553, 271, 714, 113, 845, 879, 154, 786, 866, 661, 290, 290, 536, 965, 691, 471, 882, 956, 379, 81, 555, 617, 728, 611}
Returns: 270
{8, 2, 12, 1, 16, 11, 10, 5, 3, 4, 0, 2, 0, 9, 13, 15, 7, 11, 0, 7, 0, 9, 11, 1, 8, 1, 6, 11, 15, 11, 8, 1, 13, 14, 12, 16, 1, 16, 13, 3, 11, 14, 15, 12, 12, 13, 8, 0, 6, 14}
Returns: 100
{30, 24, 30, 29, 27, 31, 17, 10, 0, 26, 3, 27, 20, 24, 9, 12, 23, 27, 32, 30, 16, 30, 27, 1, 15, 21, 7, 13, 29, 22, 29, 10, 30, 5, 5, 9, 22, 15, 16, 18, 25, 3, 16, 17, 22, 3, 18, 29, 13, 1}
Returns: 141
{54, 52, 2, 50, 51, 3, 46, 29, 35, 31, 63, 49, 16, 1, 23, 23, 28, 59, 21, 6, 5, 27, 22, 47, 15, 19, 1, 18, 58, 51, 54, 26, 20, 44, 33, 18, 50, 9, 35, 52, 24, 26, 1, 41, 5, 19, 39, 58, 15, 24}
Returns: 157
{97, 86, 6, 105, 36, 86, 84, 71, 88, 126, 10, 79, 111, 58, 98, 120, 17, 8, 16, 41, 31, 48, 45, 99, 75, 93, 40, 61, 119, 45, 108, 1, 68, 34, 91, 118, 100, 121, 102, 79, 45, 51, 1, 121, 64, 2, 77, 82, 77, 96}
Returns: 178
{90, 28, 94, 111, 12, 37, 161, 122, 207, 42, 230, 108, 253, 127, 156, 128, 123, 86, 189, 236, 191, 180, 75, 95, 184, 116, 136, 238, 170, 18, 142, 203, 117, 149, 88, 29, 120, 200, 78, 125, 63, 76, 101, 0, 171, 35, 124, 26, 89, 227}
Returns: 219
{255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}
Returns: 407
{511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511}
Returns: 458
{767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767}
Returns: 459
{895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895}
Returns: 459
{959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, 959}
Returns: 459
{0}
Returns: 0
{1}
Returns: 1
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Returns: 0
{0 }
Returns: 0
{1, 1, 1, 1, 1, 1 }
Returns: 6
{0, 0, 0 }
Returns: 0
{0, 0 }
Returns: 0
{0, 0, 0, 0 }
Returns: 0
{512 }
Returns: 10