classSolution{public int[]singleNumbers(int[] nums){
int n =0, m =1, x =0, y =0;for(int num : nums){
n ^= num;}while((n & m)==0){
m <<=1;}for(int num : nums){if((num & m)!=0){
x ^= num;}else{
y ^= num;}}returnnewint[]{x, y};}}
57.和为s的两个数字
classSolution{public int[]twoSum(int[] nums, int target){
int i =0, j = nums.length -1;while(i < j){
int temp = nums[i]+ nums[j];if(temp < target) i++;elseif(temp > target) j--;elsereturnnewint[]{nums[i], nums[j]};}returnnewint[0];}}
57 - II.和为s的连续正数序列
classSolution{public int[][]findContinuousSequence(int target){
int i =1, j =2, s =3;
List<int[]> res =newArrayList<>();while(i < j){if(s == target){
int[] temp =newint[j - i +1];for(int k =0; k < temp.length; k++){
temp[k]= i + k;}
res.add(temp);}if(s > target){
s -= i;
i++;}else{
j++;
s += j;}}return res.toArray(newint[0][]);}}
classSolution{public String reverseLeftWords(String s, int n){
String end = s.substring(0, n);
String begin = s.substring(n);return begin + end;}}
61.扑克牌中的顺子
classSolution{public boolean isStraight(int[] nums){
Set<Integer> set =newHashSet<>();
int min =14, max =0;for(int num : nums){if(num ==0)continue;
max = Math.max(max, num);
min = Math.min(min, num);if(set.contains(num))returnfalse;
set.add(num);}return(max - min)<5;}}
classSolution{public int sumNums(int n){
boolean x = n >1&&(n +=sumNums(n -1))>0;return n;}}
65.不用加减乘除做加法
classSolution{public int add(int a, int b){while(b !=0){
int c =(a & b)<<1;
a ^= b;
b = c;}return a;}}
66.构建乘积数组
classSolution{public int[]constructArr(int[] a){if(a.length ==0)returnnewint[0];
int[] b =newint[a.length];
b[0]=1;
int temp =1;for(int i =1; i < b.length; i++){
b[i]= b[i -1]* a[i -1];}for(int i = b.length -2; i >=0; i--){
temp *= a[i +1];
b[i]*= temp;}return b;}}
92.反转链表 II
classSolution{
ListNode successor =null;public ListNode reverseBetween(ListNode head, int left, int right){if(left ==1){returnreverseN(head, right);}
head.next =reverseBetween(head.next, left-1, right-1);return head;}private ListNode reverseN(ListNode head, int n){if(n ==1){
successor = head.next;return head;}
ListNode newHead =reverseN(head.next, n -1);
head.next.next = head;
head.next = successor;return newHead;}}
200.岛屿数量
classSolution{public int numIslands(char[][] grid){
int count =0;for(int i =0; i < grid.length; i++){for(int j =0; j < grid[0].length; j++){if(grid[i][j]=='1'){dfs(grid, i, j);
count++;}}}return count;}privatevoiddfs(char[][] grid, int i, int j){if(i <0|| j <0|| i >= grid.length || j >= grid[0].length || grid[i][j]=='0'){return;}
grid[i][j]='0';dfs(grid, i +1, j);dfs(grid, i -1, j);dfs(grid, i, j +1);dfs(grid, i, j -1);}}
Loading Comments...