文章

每日LeetCode 143-145

2021.4.28 ・ 共 482 字,您可能需要 1 分钟阅读

Tags: LeetCode

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0

示例 1:

输入:[2,1,2]
输出:5
class Solution {
    public int largestPerimeter(int[] nums) {
        Arrays.sort(nums);
        for (int i = nums.length - 1; i >= 2; i--) {
            if (nums[i - 2] + nums[i - 1] > nums[i]) {
                return nums[i - 2] + nums[i - 1] + nums[i];
            }
        }
        return 0;
    }
}

给你一个 无重叠的 *,*按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

示例 1:

输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]
class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
        int left = newInterval[0];
        int right = newInterval[1];
        boolean placed = false;
        List<int[]> ans = new ArrayList<>();
        for (int[] interval : intervals) {
            if (interval[0] > right ) {
                if (placed == false) {
                    ans.add(new int[]{left, right});
                    placed = true;
                }
                ans.add(interval);
            } 
            else if (interval[1] < left) {
                ans.add(interval);
            }
            else {
                left = Math.min(interval[0], left);
                right = Math.max(interval[1], right);
            }
        }
        if (placed == false) {
            ans.add(new int[]{left, right});
        }
        return (int[][])ans.toArray(new int[0][]);
    }
}

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]
class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if (k == 0 || head == null || head.next == null) {
            return head;
        }
        int n = 1;
        ListNode temp = head;
        while (temp.next != null) {
            temp = temp.next;
            n++;
        }
        int index = n - k % n;
        if (index == n) {
            return head;
        }
        temp.next = head;
        while (index > 0) {
            temp = temp.next;
            index--;
        }
        ListNode ans = temp.next;
        temp.next = null;
        return ans;
    }
}