leetcode刷题日记:118.Pascal‘s Triangle(杨辉三角)

118.Pascal’s Triangle(杨辉三角) 题目给我们一个整数numRows表示杨辉三角形的行数,返回杨辉三角形的前numRows行,下面给出一个杨辉三角形看看它有哪些规律; 可以看出杨辉三角形的每一行的最左侧和最右侧的值都为1. 其余的第i行的第j个元素p[i][j]可以由下图确定: 可以看出p[i][j] = p[i-1][j]+p[i-1][j-1],有了上述的思路我们可以写出代码如下: int*...

LeetCode刷题-前缀和】--303.区域和检索-数组不可变

303.区域和检索-数组不可变 方法:前缀和 存储数组nums的值,每次调用sumRange时,通过循环的方法计算数组nums从下标i到下标j范围内的元素和,需要计算j-i+1个元素的和,由于每次检索的时间和检索的下标范围有关,因此检索的时间复杂度较高,如果检索次数较多,则会超出时间限制。 由于会进行多次检索,即每次调用sumRange,因此为了降低检索的总时间,应该降低sumRange的时间复杂度,最理想的情况是...

leetcode刷题日记:111. Minimum Depth of Binary Tree(二叉树的最小深度)

给我们一个二叉树,我们应该如何来求二叉树的最小深度呢? 二叉树的最小深度指的是叶子结点到所处的位置最小的,这就是二叉树的最小深度,也就是说我们要找的是离根结点最近的叶子结点。如果我们从根结点向下出发寻找叶子节点,一层一层的去找叶子结点最先找到的叶子结点所处于的深度就是二叉树的最小深度,而叶子结点的标志就是两个指针域都为NULL。所以我们只需要去寻找最先出现的二叉树的两个指针域都为NULL的结点。 但是从上往下去寻找...

LeetCode刷题-二分查找】--704.二分查找

704.二分查找 class Solution { public int search(int[] nums, int target) { if(nums.length == 0){ return -1; } int left = 0,right = nums.length - 1; while(left <= right){ int mid = (right - left) / 2 + left; if(nums...

LeetCode刷题-二分查找】--658.找到K个最接近的元素

658.找到K个最接近的元素 方法一:二分查找+双指针 假设数组长度为n,数组arr已经按照升序排序,可以将数组arr分为两部分,前一部分所有元素[0,left]都小于x,后一部分[right,n-1]都大于等于x,left与right都可以通过二分查找获得left和right指向的元素都是各自部分最接近x的元素,因此我们可以通过比较left和right指向的元素获取整体最接近x的元素,如果x-arr[left]≤...

leetcode刷题日记:110. Balanced Binary Tree(平衡二叉树)

题目给了我们一个二叉树要让我们来判断这一个二叉树是不是平衡二叉树。 要想判断一棵树是不是平衡二叉树,我们得首先知道平衡二叉树的定义是什么,平衡二叉树指的是这样的树它的左子树的高度与右子树高度的差的绝对值不能超过1,而且它的左子树是一颗平衡二叉树,它的右子树也是一颗平衡二叉树。画出图示如下: 我们可以看出这一个二叉树的左子树是高度为3的一棵树,右子树为高度为1的一颗子树,所以这不是一颗平衡二叉树。 上面这一颗树虽然根...

LeetCode刷题-链表】--876.链表的中间结点

876.链表的中间结点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val ...

LeetCode刷题-栈与队列】--232.用栈实现队列

232.用栈实现队列 class MyQueue { Deque<Integer> inStack; Deque<Integer> outStack; public MyQueue() { inStack = new ArrayDeque<Integer>(); outStack = new ArrayDeque<Integer>(); } public void push(int x) { inStack.pus...

LeetCode刷题-链表】--203.移除链表元素

203.移除链表元素 方法:定义一个节点指向头节点head,避免头结点单独操作 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val...

LeetCode刷题-链表】--82.删除排序链表中的重复元素II

82.删除排序链表中的重复元素II 由于链表是排好序的,所以只需要对其进行一次遍历即可,比较相邻节点对应的值 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * L...
© 2024 LMLPHP 关于我们 联系我们 友情链接 耗时0.006751(s)
2024-12-22 14:07:29 1734847649