网页翻译突然不翻译了seo网站排名厂商定制
目录
一、删除有序数组中的重复项II
二、删除有序数组中的重复项
三、数字转罗马格式
一、删除有序数组中的重复项II
一下写过,挺舒服!
1、统计超出2的数量有多少,仅保留2个重复数字
2、有多少次就从后往前覆盖几次
public int removeDuplicates(int[] nums) {int i = 0;int len = nums.length;while(i < len){int count = 1;while(i+1 < len && nums[i] == nums[i+1]){count++;i++;}while(count > 2){move(i,nums,len);len--;i--;count--;}i++;}return len;}public void move(int i,int[] nums,int len){for(;i < len-1;i++){nums[i] = nums[i+1];}}
二、删除有序数组中的重复项
开始覆盖的时机是当count > 1,仅保留1个重复数字
public int removeDuplicates(int[] nums) {int i = 0;int len = nums.length;while(i < len){int count = 1;while(i+1 < len && nums[i] == nums[i+1]){count++;i++;}while(count > 1){move(i,nums,len);len--;i--;count--;}i++;}return len;}public void move(int i,int[] nums,int len){for(;i < len-1;i++){nums[i] = nums[i+1];}}
三、数字转罗马格式
12. 整数转罗马数字 - 力扣(LeetCode)
难得见题目这么详细的说有哪些情况,然后照着情况来写就行
public String intToRoman(int num) {StringBuilder s = new StringBuilder();if (num >= 1000) {int mCount = num / 1000;num -= (mCount * 1000);while (mCount-- > 0) {s.append("M");}}if (num / 100 == 9) {s.append("CM");num -= 900;}if (num >= 500) {int dCount = num / 500;num -= (dCount * 500);while (dCount-- > 0) {s.append("D");}}if (num / 100 == 4) {s.append("CD");num -= 400;}if (num >= 100) {int cCount = num / 100;num -= (cCount * 100);while (cCount-- > 0) {s.append("C");}}if (num / 10 == 9) {s.append("XC");num -= 90;}if (num >= 50) {int lCount = num / 50;num -= (lCount * 50);while (lCount-- > 0) {s.append("L");}}if (num / 10 == 4) {s.append("XL");num -= 40;}if (num >= 10) {int lCount = num / 10;num -= (lCount * 10);while (lCount-- > 0) {s.append("X");}}if (num / 1 == 9) {s.append("IX");num -= 9;}if (num >= 5) {int lCount = num / 5;num -= (lCount * 5);while (lCount-- > 0) {s.append("V");}}if (num / 1 == 4) {s.append("IV");num -= 4;}if (num >= 1) {int lCount = num / 1;num -= (lCount * 1);while (lCount-- > 0) {s.append("I");}}return s.toString();}