用友技术笔试-友新星实习项目-Java-01卷(2024.5.26 15:00-17:00)第1题public class Solution {    public long minOperations(int[] nums1, int[] nums2, int k) {        int n = nums1.length;        int[] diff = new int[n];        long totalIncrease = 0, totalDecrease = 0;        for (int i = 0; i < n; i++) {            diff[i] = nums2[i] - nums1[i];            if (diff[i] % k != 0) {                return -1;            }            if (diff[i] > 0) {                totalIncrease += diff[i] / k;            } else if (diff[i] < 0) {                totalDecrease += -diff[i] / k;            }        }        if (totalIncrease != totalDecrease) {            return -1;        }        return totalIncrease;    }}第2题解法1public class Solution {    public ArrayList<Integer> findAllPerson(int n, int[][] meetings, int firstPerson) {        ArrayList<Integer> ans = new ArrayList<>();        ans.add(0);        ans.add(firstPerson);        Arrays.sort(meetings, new Comparator<int[]>() {            @Override            public int compare(int[] o1, int[] o2) {                return o1[2] - o2[2];            }        });        for (int[] meeting : meetings) {            if (ans.contains(meeting[0]) && !ans.contains(meeting[1])) {                ans.add(meeting[1]);            }            if (ans.contains(meeting[1]) && !ans.contains(meeting[0])) {                ans.add(meeting[0]);            }        }        Collections.sort(ans);        return ans;    }}解法2使用TreeSet去重并排序public class Solution {    public ArrayList<Integer> findAllPerson(int n, int[][] meetings, int firstPerson) {        TreeSet<Integer> set = new TreeSet<>();        set.add(0);        set.add(firstPerson);        Arrays.sort(meetings, new Comparator<int[]>() {            @Override            public int compare(int[] o1, int[] o2) {                return o1[2] - o2[2];            }        });        for (int[] meeting : meetings) {            if (set.contains(meeting[0])) {                set.add(meeting[1]);            }            if (set.contains(meeting[1])) {                set.add(meeting[0]);            }        }        return new ArrayList<>(set);    }}第3题解法1(不符合题目要求的不能更改节点的value)public class Solution {    public ListNode groupSort(ListNode head, int n) {        if (head == null || n <= 1) {            return head;        }        ListNode dummyHead = new ListNode(-1);        dummyHead.next = head;        ListNode preEnd = dummyHead;        while (head != null) {            ListNode start = head;            ListNode end = head;            int count = 1;            while (count < n && end.next != null) {                end = end.next;                count++;            }            if (count < n) {                break;            }            ListNode nextStart = end.next;            end.next = null;            ListNode sortedHead = sort(start);            preEnd.next = sortedHead;            while (preEnd.next != null) {                preEnd = preEnd.next;            }            preEnd.next = nextStart;            head = nextStart;        }        return dummyHead.next;    }    public ListNode sort(ListNode head) {        List<Integer> values = new ArrayList<>();        ListNode cur = head;        while (cur != null) {            values.add(cur.val);            cur = cur.next;        }        Collections.sort(values, Collections.reverseOrder());        cur = head;        for (Integer value : values) {            cur.val = value;            cur = cur.next;        }        return head;    }}解法2(符合题目要求)public class Solution {    public ListNode groupSort(ListNode head, int n) {        if (head == null || n <= 1) {            return head;        }        ListNode dummyHead = new ListNode(-1);        dummyHead.next = head;        ListNode preEnd = dummyHead;        while (head != null) {            ListNode start = head;            ListNode end = head;            int count = 1;            while (count < n && end.next != null) {                end = end.next;                count++;            }            if (count < n) {                break;            }            ListNode nextStart = end.next;            end.next = null;            ListNode sortedHead = sort(preEnd);            preEnd.next = sortedHead;            while (preEnd.next != null) {                preEnd = preEnd.next;            }            preEnd.next = nextStart;            head = nextStart;        }        return dummyHead.next;    }    public ListNode sort(ListNode preEnd) {        ListNode cur = preEnd.next;        PriorityQueue<ListNode> pq = new PriorityQueue<>(new Comparator<ListNode>() {            @Override            public int compare(ListNode o1, ListNode o2) {                return o2.val - o1.val;            }        });        while (cur != null) {            pq.add(cur);            cur = cur.next;        }        cur = preEnd;        while (!pq.isEmpty()) {            cur.next = pq.poll();            cur = cur.next;        }        cur.next = null;        return preEnd.next;    }}第4题public class Solution {    public int[][] interviews;    public int maxValue(int[][] interviews, int k) {        if (k < 1) {            return 0;        }        Arrays.sort(interviews, new Comparator<int[]>() {            @Override            public int compare(int[] o1, int[] o2) {                return o1[1] - o2[1];            }        });        this.interviews = interviews;        int[][] dp = new int[interviews.length + 1][k + 1];        for (int i = 1; i <= interviews.length; i++) {            for (int j = 1; j <= k; j++) {                dp[i][j] = dp[i - 1][j];                int p = find(i - 1);                if (p != -1) {                    dp[i][j] = Math.max(dp[i][j], dp[p + 1][j - 1] + interviews[i - 1][2]);                } else {                    dp[i][j] = Math.max(dp[i][j], interviews[i - 1][2]);                }            }        }        return dp[interviews.length][k];    }    public int find(int i) {        int low = 0, high = i - 1;        while (low <= high) {            int mid = low + (high - low) / 2;            if (interviews[mid][1] < interviews[i][0]) {                if (mid + 1 <= i - 1 && interviews[mid + 1][1] < interviews[i][0]) {                    low = mid + 1;                } else {                    return mid;                }            } else {                high = mid - 1;            }        }        return -1;    }}
点赞 17
评论 8
全部评论

相关推荐

07-28 16:37
门头沟学院 Java
哎,继续加油吧
ResourceUt...:能接到面试就已经是✌🏻了
腾讯一面2195人在聊
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务