三数之和-中等
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
Integer len=nums.length;
Arrays.sort(nums);
List<List<Integer>> result=new ArrayList<>();
int i=0;
if(len<3){
return result;
}
while(i<len-2){
if(i!=0&&nums[i]==nums[i-1]){
i++;
continue;
}
if(nums[i]>0){
break;
}
int L=i+1;
int R=len-1;
while(L<R){
if(L!=i+1&&nums[L]==nums[L-1]){
L++;
continue;
}
if(R!=len-1&&nums[R]==nums[R+1]){
R--;
continue;
}
if((nums[i]+nums[L]+nums[R])==0){
result.add(Arrays.asList(nums[i],nums[L],nums[R]));
L++;
R--;
}else if((nums[i]+nums[L]+nums[R])>0){
R--;
}else{
L++;
}
}
i++;
}
return result;
}
}
数字转罗马数字-中等
class Solution {
public String intToRoman(int num) {
StringBuffer sb = new StringBuffer();
while(num>0){
if(num>=1000){
sb.append("M".repeat(num/1000));
num=num%1000;
}else if(num>=900){
sb.append("CM");
num=num-900;
}else if(num>=500){
sb.append("D");
num=num-500;
}else if(num>=400){
sb.append("CD");
num=num-400;
}else if(num>=100){
sb.append("C".repeat(num/100));
num=num%100;
}else if(num>=90){
sb.append("XC");
num=num-90;
}else if(num>=50){
sb.append("L");
num=num-50;
}else if(num>=40){
sb.append("XL");
num=num-40;
}else if(num>=10){
sb.append("X".repeat(num/10));
num=num%10;
}else if(num>=9){
sb.append("IX");
num=num-9;
}else if(num>=5){
sb.append("V");
num=num-5;
}else if(num>=4){
sb.append("IV");
num=num-4;
}else{
sb.append("I".repeat(num));
break;
}
}
return sb.toString();
}
}
两两交换链表中的节点-中等
class Solution {
public ListNode swapPairs(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode first=head;
ListNode last=null;
ListNode second=first.next;
ListNode headNode=head.next;
while(first!=null){
if(last==null){
first.next=second.next;
second.next=first;
last=first;
first=first.next;
if(first==null){
break;
}
second=first.next;
}else{
if(second==null){
break;
}
last.next=second;
first.next=second.next;
second.next=first;
last=first;
first=first.next;
if(first==null){
break;
}
second=first.next;
}
}
return headNode;
}
}