给定一个已排序的链表的头
head, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
输入:head = [1,1,2]
输出:[1,2[
//链表结构
public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }
class Solution {public ListNode deleteDuplicates(ListNode head) {if(head == null){return null;}ListNode node = head;while(node.next != null){if(node.val == node.next.val){node.next = node.next.next;}else{node = node.next;}}return node;}
}
给你两棵二叉树的根节点
p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的
public sttaic void dfs(TreeNode node1,TreeNode node2){//递归的结束标志,当遍历到树的节点为空时结束当前路径的遍历,并返回trueif(node1 == null && node2 == null) return true;//如果两个节点一个为空一个不为空则不相同else if(node1 == null || node2 == null) return false;//如果两节点不为空,但值不相等 也不相等else if(node1.val != node2.val) return false;//再比较左子树和右子树是否相等else return dfs(node1.left,node2.left) && dfs(node1.right,node2.right);}
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
public boolean hasPathSum(TreeNode root, int sum) {//如果当前节点为空返回falseif (root == null) {return false;}//如果不为空,但是左子节点和右子节点都为空则为叶子节点// 最后一个叶子节点的值应该等于目标值if (root.left == null && root.right == null) {return sum == root.val;}//不满足条件就将总和减去当前节点的值,重复递归return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);}

public int maxProfit(int[] prices) {if(prices.length <= 1){return 0;}int max = 0;int min = prices[0];for(int i = 0;i < prices.length;i++){max = Math.max(max,prices[i] - min);min = Math.min(min,prices[i]);}return max;}
上一篇:一个人拿弓射鸟是什么成语
下一篇:王玲玲艺术签名手体