Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package other;
- public class interview_arrayshift {
- /**
- * n = 5
- * [1,2,3,4,5] or [5,4,3,2,1]
- * [1,2,3,4,5]: true : [0, +1, +1, +1, +1]
- * [3,4,5,1,2]: true : [0, +1, +1, -4, +1, +1]
- * *[4,5,1,2,3]: true : [0, +1, -4, +1, +1]
- * [5,1,2,3,4]: true : [0, -4, +1, +1, +1]
- * [5,4,1,2,3]: false
- * *[3,2,1,5,4]: true : [0, -1, -1, +4, -1]
- *
- */
- public static void main (String[] args) {
- // int[] ary = {1,2,3,4,5};
- // int[] ary = {4,5,1,2,3};
- // int[] ary = {4,5,6,7,8,1,2,3};
- // int[] ary = {7,8,4,5,6,1,2,3}; // wrong: double downs
- // int[] ary = {5,4,3,2,1};
- // int[] ary = {3,2,1,5,4};
- // int[] ary = {7,6,5,4,3,2,1,9,8};
- int[] ary = {3,2,1,7,6,5,9,8}; // wrong: double ups
- boolean result_asce = check_asec(ary);
- if (result_asce == true)
- System.out.println("result_asce: " + result_asce);
- boolean result_desc = check_desc(ary);
- if (result_desc == true)
- System.out.println("result_desc: " + result_desc);
- }
- private static boolean check_asec(int[] ary) {
- // O: ups
- // O: ups down ups
- // X: ups down down
- int correct_sum_1 = ary.length - 1;
- int correct_sum_2 = -1;
- int diff_sum;
- int sum = 0;
- int i_prev = 0;
- int count_go_down = 0;
- for (int i = 1; i < ary.length; i++) {
- int diff = ary[i] - ary[i_prev];
- if (diff < 0) count_go_down++;
- if (count_go_down > 1) return false;
- sum += diff;
- i_prev = i;
- }
- if (sum == correct_sum_1) {
- return true;
- }else if (sum == correct_sum_2) {
- return true;
- }
- return false;
- }
- private static boolean check_desc(int[] ary) {
- // O: downs
- // O: downs up downs
- // X: downs up downs
- int correct_sum_1 = -(ary.length - 1);
- int correct_sum_2 = +1;
- int diff_sum;
- int sum = 0;
- int i_prev = 0;
- int count_go_up = 0;
- for (int i = 1; i < ary.length; i++) {
- int diff = ary[i] - ary[i_prev];
- if (diff > 0) count_go_up++;
- if (count_go_up > 1) return false;
- sum += diff;
- i_prev = i;
- }
- if (sum == correct_sum_1) {
- return true;
- }else if (sum == correct_sum_2) {
- return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement