分享小红书算法三个题

小红书是第一次笔试全部AC的,也来不自量力跟大家分享一下。写得比较啰嗦,大家看看就好了。

第一题
import java.util.*;
class ListNode {  int val;  ListNode next = null;  ListNode(int val){  this.val = val;  }
}
public class Main{
    public static void main(String[] args) {  Scanner sc = new Scanner(System.in);  String str = sc.nextLine();  int k = sc.nextInt();  sc.close();  String[] strs = str.split(" ");  int[] node = new int[strs.length];  for (int i = 0; i < node.length; i++) {  node[i] = Integer.parseInt(strs[i]);  }  ListNode head = new ListNode(node[0]);  ListNode p = head;  for (int i = 1; i < node.length; i++) {  ListNode tmp = new ListNode(node[i]);  p.next = tmp;  p = p.next;  }  ListNode res = reverseKGroup(head, k);  ListNode index = res;  System.out.print(index.val);  while(index.next != null) {  index = index.next;  System.out.print(" " + index.val);  }
    }
    public static ListNode reverseKGroup(ListNode head, int k) {

        if (k <= 1) {
            return head;
        }

        ListNode root = new ListNode(0);
        ListNode groupHead = root;
        ListNode curr = head;
        ListNode groupTail = head;
        ListNode next;
        int count = 0;


        while (curr != null) {
            if (count == 0) {
                groupTail = curr;
            }
            count++;
            next = curr.next;
            curr.next = groupHead.next;
            groupHead.next = curr;
            curr = next;
            if (count == k) {
                groupHead = groupTail;
                count = 0;
            }
        }

        if (count != 0) {
            curr = groupHead.next;
            groupHead.next = null;

            while (curr != null) {
                next = curr.next;
                curr.next = groupHead.next;
                groupHead.next = curr;
                curr = next;
            }
        }

        return root.next;
    }
 
}

第二题
import java.util.*;
public class jiecheng0 {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         sc.close();         int num = 0;         for (int i = 1; i <= n; i++) {             num += zeroNum(i);         }         System.out.println(num);     }     public static int zeroNum(int n) {         int count = 0;         while (n != 0) {             count += n / 5;             n = n / 5;         }         return count;     }

}

第三题
import java.util.*;
public class fenban {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int personNum = sc.nextInt();
        int requestNum = sc.nextInt();
        int[][] reqs = new int[requestNum][2];
        for (int i = 0; i < requestNum; i++) {
            reqs[i][0] = sc.nextInt();
            reqs[i][1] = sc.nextInt();
        }
        sc.close();
        sort(reqs, new int[] {0,1}); 
        
        HashSet<Integer> hs1 = new HashSet<>();
        HashSet<Integer> hs2 = new HashSet<>();
        boolean flag = true;
        hs1.add(reqs[0][0]);
        hs2.add(reqs[0][1]);
        for (int i = 1; i < requestNum; i++) {
            if ((hs1.contains(reqs[i][0]) && hs1.contains(reqs[i][1])) || (hs2.contains(reqs[i][0]) && hs2.contains(reqs[i][1]))) {
                flag = false;
                continue;
            }
            if (hs1.contains(reqs[i][0]) && !hs2.contains(reqs[i][1])) {
                hs2.add(reqs[i][1]);
                continue;
            }
            else if (hs2.contains(reqs[i][0]) && !hs1.contains(reqs[i][1])) {
                hs1.add(reqs[i][1]);
                continue;
            }                   }
        if (flag == true)
            System.out.println(1);
        else
            System.out.println(0);
    } 
    
    public static void sort(int[][] ob, final int[] order) {    
        Arrays.sort(ob, new Comparator<Object>() {    
            public int compare(Object o1, Object o2) {    
                int[] one = (int[]) o1;    
                int[] two = (int[]) o2;    
                for (int i = 0; i < order.length; i++) {    
                    int k = order[i];    
                    if (one[k] > two[k]) {    
                        return 1;    
                    } else if (one[k] < two[k]) {    
                        return -1;    
                    } else {    
                        continue; 
                    }    
                }    
                return 0;    
            }    
        });   
    }    
}
#小红书#
全部评论

相关推荐

03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务