package basic; /** * Created by zxc on 2018/3/23. */ public class ArithmeticTwo { public static void main(String[] args) { /* String roman = "XVIII"; int num = romanToNumber(roman, 0, roman.length() - 1); System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y--------------->" + num);*/ // beerAndDrink(); /* String s = "HELLO WORLD"; char[] ch = new char[s.length()]; for (int i = 0; i < s.length(); i++) { ch[i] = (char) encode(s.charAt(i), 3); }*/ int gcd = gcd(35, 5); System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y------------>" + gcd); } /** * æ±æå¤§å ¬çº¦æ° * * @param num1 * @param num2 */ public static int gcd(int num1, int num2) { // æ±ä½æ° int r = num1 % num2; // 妿使°ä¸º0ï¼é£ä¹é¤æ°å°±æ¯æå¤§å ¬çº¦æ° if (r == 0) { return num2; } else { // å¦åï¼åç¨é¤æ°å使°æ¥è¿è¡è¿ç® return gcd(num2, r); } } /** * å³ç§» */ public static int rotateRight(int ch) { if (ch >= 'A' && ch <= 'Y') { return ch + 1; } else if (ch >= 'a' && ch <= 'y') { return ch + 1; } else if (ch == 'Z') { return 'A'; } else if (ch == 'z') { return 'a'; } else { return ch; } } /** * 左移 */ public static int rotateLeft(int ch) { if (ch >= 'B' && ch <= 'Z') { return ch - 1; } else if (ch >= 'b' && ch <= 'z') { return ch - 1; } else if (ch == 'A') { return 'Z'; } else if (ch == 'a') { return 'z'; } else { return ch; } } /** * å å¯ * * @param ch * @param shift * @return */ public static int encode(int ch, int shift) { // å¦ææ²¡æç§»å¨ï¼åç´æ¥è¿å if (shift == 0) { return ch; } else if (shift > 0) { // 妿shiftç§»å¨çæ¯æ£æ°ï¼é£ä¹å°±åå³ç§»å¨ for (int i = 0; i < shift; i++) { ch = rotateRight(ch); } return ch; } else { // 妿shiftç§»å¨çæ¯è´æ°ï¼é£ä¹å°±åå·¦ç§»å¨ for (int i = 0; i < -shift; i++) { ch = rotateLeft(ch); } return ch; } } /** * å¤é ä¸é¥®æé¢ç® */ public static void beerAndDrink() { // å¤é for (int i = 0; i < 36; i++) { // 饮æ for (int j = 0; j < 44; j++) { // é±å好è±å äºï¼å¹¶ä¸å¤é æ¯é¥®æå° if (2.3 * i + j * 1.9 == 82.3 && i < j) { System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y--------------->å¤é ä¹°äº" + i); } } } } /** * å°ç½é©¬æ°å转æé¿æä¼¯æ°åï¼å®é ä¸å°±æ¯ä¸ä¸ªæ¥è¡¨çè¿ç¨ * - * * @param roman * @return */ public static int digitsToValues(char roman) { // å®ä¹ç½é©¬æ°å char digits[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'}; // ç½é©¬æ°å对åºçé¿æä¼¯æ°å int values[] = {1, 5, 10, 50, 100, 500, 1000}; for (int i = 0; i < digits.length; i++) { if (digits[i] == roman) { return values[i]; } } return 0; } /** * æ¾å°å½åç½é©¬æ°åæå¤§å¼çè§æ * * @param digits * @return */ public static int findMaxIndex(String digits, int L, int R) { // å设第ä¸ä¸ªæ¯æå¤§ç int max = digitsToValues(digits.charAt(L)); int maxIndex = L; for (int i = L; i < R; i++) { // å°ç½é©¬æ°åè½¬ææ¯é¿æä¼¯æ°å int num = digitsToValues(digits.charAt(i)); if (max < num) { max = num; maxIndex = i; } } return maxIndex; } /** * å°ç½é©¬æ°å转æé¿æä¼¯æ°å * * @param romanNumber * @param L * @param R */ public static int romanToNumber(String romanNumber, int L, int R) { // å¦æåªæä¸ä¸ªç½é©¬æ°åï¼é£ä¹å¯ä»¥ç´æ¥è¿åäº(éå½åºå£) if (L == R) { return digitsToValues(romanNumber.charAt(L)); } else if (L > R) { // 妿LåRå·²ç»è¶çäºï¼é£ä¹è¯´ææ²¡æå¼äº return 0; } else { // æ¾å°å½åç½é©¬æ°åæå¤§å¼çè§æ int maxIndex = findMaxIndex(romanNumber, L, R); // å¾å°æå¤§å¼ int max = digitsToValues(romanNumber.charAt(maxIndex)); // 卿大å¼å·¦è¾¹çï¼åç¨æå¤§å¼åå»å·¦è¾¹ç int left = romanToNumber(romanNumber, L, maxIndex - 1); // 卿大å¼å³è¾¹çï¼åç¨æå¤§å¼å ä¸å³è¾¹ç int right = romanToNumber(romanNumber, maxIndex + 1, R); return max - left + right; } } /** * ç»ææ */ public static void drawStar() { // æè¦ç»5è¡çææ int row = 5; for (int i = 1; i <= 5; i++) { // ç©ºæ ¼æ°çäºæå¤§è¡æ° - å½åè¡æ° for (int j = 1; j <= row - i; j++) { System.out.print(" "); } // æææ°çäº(å½åè¡æ°*2-1) for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } // æ¯ç»ä¸è¡å°±æ¢ä¸æ¬¡è¡ System.out.println(); } } /** * æ¾åºæ°ç»çå个æ°å * * @param nums * @return */ public static void singleNumber(int[] nums) { for (int i = 0; i < nums.length; i++) { int count = countNumber(nums, nums[i]); // å¦æè¯¥å ç´ åªåºç°ä¸æ¬¡ï¼é£ä¹å°±æ¯å®äºï¼ if (count == 1) { System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y--->åä¸çå ç´ æ¯ï¼" + nums[i]); return; } } } /** * æ¾åºæ¯ä¸ªå ç´ åºç°çæ¬¡æ° * * @param nums æ°ç» * @param value æ³ç¥éåºç°æ¬¡æ°çå ç´ */ public static int countNumber(int[] nums, int value) { int count = 0; for (int i = 0; i < nums.length; i++) { if (value == nums[i]) { count++; } } // è¿å该å ç´ åºç°çæ¬¡æ° return count; } /** * æ¾åºæ°ç»çå个æ°å * * @param nums * @param numsSize * @return */ public static int singleNumber(int[] nums, int numsSize) { // 第ä¸ä¸ªæ°åæ°ç»åé¢çæ°å^è¿ç®ï¼çä¸çå¿ ç¶æ¯å个æ°å int k = nums[0]; for (int i = 1; i < numsSize; i++) { k = (k ^ nums[i]); } return k; } /** * ç§»å¨å ç´ 0å°æ°ç»æå * * @param arrays */ public static void moveZero(int[] arrays) { // è®°å½è¯¥æ°ç»æå¤å°ä¸ª0å ç´ int zero = 0; for (int i = 0; i < arrays.length; i++) { // åªè¦å ç´ ä¸ä¸º0ï¼é£ä¹å°±å¾åé¢ç§»å¨ if (arrays[i] != 0) { arrays[i - zero] = arrays[i]; } else { // å¦æä¸º0ï¼é£ä¹zero ++ zero++; } } // 1. åé¢å·²ç»å°é0çå ç´ ç§»å¨å°æ°ç»çåé¢äº // 2. å°ä¸º0çå ç´ å¡«æ»¡æ°ç»ï¼å¡«å çä½ç½®å°±ä»length - zeroå¼å§ int j = arrays.length - zero; while (j < arrays.length) { arrays[j] = 0; j++; } System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y---->" + arrays); } /** * ç§»å¨å ç´ 0å°æ°ç»æå * * @param arrays */ public static void moveZero2(int[] arrays) { // å¨jåé¢çå ç´ é½ä¸æ¯0 int j = 0; for (int i = 0; i < arrays.length; i++) { if (arrays[i] != 0) { // è·jè¿è¡äº¤æ¢ï¼ä¿è¯jçåé¢é½ä¸æ¯0 int temp = arrays[i]; arrays[i] = arrays[j]; arrays[j] = temp; j++; } } // ç´è³iéå宿¯åï¼jåé¢é½ä¸æ¯0ï¼j-i齿¯0(è¿å°±å®ææä»¬çä»»å¡äº) System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y---->" + arrays); } /** * æ¾å°ç¼ºå¤±çæ°å * * @param arrays */ public static void missingNumber(int[] arrays) { // å®ä¹è¦å¡«å å°æ°æ°ç»çæ°å(éæ) int randomNumber = 89898980; // å建ä¸ä¸ªæ°çæ°ç»(æ¯å·²ç¼ºå¤±çæ°ç»å¤ä¸ä¸ªé¿åº¦) int[] newArrays = new int[arrays.length + 1]; // å¡«å ç¹æ®çæ°åè¿æ°æ°ç»ä¸ for (int i = 0; i < newArrays.length; i++) { // éæå¡«å æ°ç»å°æ°æ°ç»ä¸ newArrays[i] = randomNumber; } // éåé¢ç®çæ°ç»å¹¶ä½¿ç¨indexæ¿ä»£ææ°æ°ç»çå ç´ for (int i = 0; i < arrays.length; i++) { // é¢ç®æ°ç»çå¼[0,1,2,3,4,...n]å ¶ä¸æä¸ä¸ªç¼ºå¤± int index = arrays[i]; // éæ°å¡«å å°æ°æ°ç»ä¸ï¼index对åºçé¢ç®æ°ç»çå¼ newArrays[index] = 3333333; } // éåæ°æ°ç»ï¼åªè¦è¿æå¼ä¸º89898980ï¼é£ä¹é£ä¸ªå°±æ¯ç¼ºå¤±çæ°å for (int i = 0; i < newArrays.length; i++) { if (newArrays[i] == randomNumber) { System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y---->ç¼ºå¤±çæ°åæ¯ï¼" + i); } } } /** * å©ç¨çå·®å ¬å¼æ¾å°ç¼ºå¤±çæ°å * * @param arrays */ public static void missingNumber2(int[] arrays) { // å¥ç¨çå·®æ±åå ¬å¼ int sum = (arrays[0] + arrays[arrays.length - 1]) * (arrays.length + 1) / 2; // éåæ°ç»ï¼å¾åºçsumå廿°ç»æ¯ä¸ä½å ç´ ï¼æå峿¯ç¼ºå¤±çæ°å for (int value : arrays) { sum = sum - value; } System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y---->ç¼ºå¤±çæ°åæ¯ï¼" + sum); } /** * å é¤ä¸æ 为kçå ç´ */ public static void deleteK() { //åºå®ç常é(æ¯æ°ç»å ç´ ç个æ°è¦å¤§) int N = 10; int[] arrays = new int[N]; //对æ°ç»è¿è¡åå§å for (int i = 0; i < 8; i++) { arrays[i] = i; } //è¦å é¤ä¸æ int k = 7; for (int i = k; i < N - 1; i++) { arrays[i] = arrays[i + 1]; } System.out.println("å ¬ä¼å·ï¼Java3y" + arrays); } /** * æ¾åºå¸¸ç¨çæ°åï¼ * ç»ä½ ä¸ä¸ªé¿åº¦ä¸ºnçæ°ç»ï¼å ¶ä¸æä¸ä¸ªæ°ååºç°ç次æ°è³å°ä¸ºn/2ï¼æ¾åºè¿ä¸ªæ°å */ public static void findMajorityElement(int[] arrays) { //æå»ºä¸ä¸ªéææ int[] stack = new int[arrays.length]; // æ çfrontæé int front = -1; // éåç»åºçæ°ç» for (int i = 0; i < arrays.length; i++) { // å¤æè¯¥æ 为空ï¼é£ä¹ç´æ¥å°å ç´ å ¥æ if (front == -1) { stack[++front] = arrays[i]; } else if (stack[front] == arrays[i]) { // 该å ç´ æ¯å¦ä¸æ çå ç´ ä¸è´-->ç»§ç»å ¥æ stack[++front] = arrays[i]; } else { // åªè¦ä¸ä¸è´ï¼å°±åºæ front--; } } // åªè¦è¯¥æ°ååºç°æ¬¡æ°å¤§äºæ°ç»é¿åº¦ç2/1ï¼é£ä¹ç䏿¥çæ°åè¯å®å¨æ é¡¶ä¸ System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y--->" + stack[0]); } public static void findMajorityElement2(int[] arrays) { // è£ è½½æ çå ç´ int candidate = -1; // æ ç大å°(é¿åº¦) int count = 0; // éåç»åºçæ°ç» for (int i = 0; i < arrays.length; i++) { // å¤æè¯¥æ 为空ï¼é£ä¹ç´æ¥å°å ç´ å ¥æ if (count == 0) { candidate = arrays[i]; count++; } else if (candidate == arrays[i]) { // 该å ç´ æ¯å¦ä¸æ çå ç´ ä¸è´-->å ¥æ (æ å¤ä¸ä¸ªå ç´ ) count++; } else { // åªè¦ä¸ä¸è´-->åºæ (æ å°ä¸ä¸ªå ç´ ) count--; } } // åªè¦è¯¥æ°ååºç°æ¬¡æ°å¤§äºæ°ç»é¿åº¦ç2/1ï¼é£ä¹ç䏿¥çæ°åè¯å®å¨æ é¡¶ä¸ System.out.println("å ³æ³¨å ¬ä¼å·ï¼Java3y--->" + candidate); } }