每日一题☀️
题目
最接近原点的的K个点
最接近原点的的K个点
973. 最接近原点的 K 个点我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。
(这里,平面上两点之间的距离是欧几里德距离。)
你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。
示例 1:1234567输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释: (1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt(8) < sqrt(10),(-2, 2) 离原点更近。我们只需要距离原点最近的 K = 1 个点,所以答案就是 [[-2,2]]。示例 2:123输入:points = [[3,3],[5,-1],[-2,4]], K = 2输出:[[3,3],[-2,4]](答案 [[-2,4],[3,3]] 也会被接受。)
代码123456789class Solution {public: vector<vector<int& ...
树🌳
刷题目录求根到叶子节点数字之和
检查平衡性
求根到叶子节点数字之和129. 求根到叶子节点数字之和给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。
例如,从根到叶子节点路径 1->2->3 代表数字 123。
计算从根到叶子节点生成的所有数字之和。
说明: 叶子节点是指没有子节点的节点。
示例 1:123456789输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.示例 2:123456789101112输入: [4,9,0,5,1] 4 / \ 9 0 / \5 1输出: 1026解释:从根到叶子节点路径 4->9->5 代表数字 495.从根到叶子节点路径 4->9->1 代表数字 491.从根到叶子节点路径 4->0 代表数字 40.因此,数字总和 = 495 + 491 + 40 = 1026. ...
OJ在线编程常见输入输出练习
刚开始接触ACM吃过的亏😭😭😭
贪心算法(自刷)
贪心算法(自刷)53.最大子序和
53最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
思路:
初始化
定义一个当前和curSum,为负数的时候就清零从新累计,初始值为0;
定义一个最大和maxSum,每当curSum求出之后都要拿来比较一下,进行更新,初始值为Integer.MIN_VALUE,保证计算第一
元素的时候maxSum就更新为curSum;
遍历,对每一个元素进行如下操作:
计算当前和curSum;
更新最大和maxSum;
更新当前和curSum,若为负数则清零
返回
代码:1234567891011121314151617181920212223class Solution{public: int maxSubArray(vector<int> &nums) { //类似寻找最大最小值的题目,初始 ...
栈(自刷)
栈题目一
剑指 Offer 09. 用两个栈实现队列
用两个栈实现队列剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
示例 1:1234输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:1234输入:["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"][[],[],[5],[2],[],[]]输出:[null,-1,null,null,5,2]提示 ...
二叉树
二叉树刷题合集,不权威
copy(自刷)
副本文件题目一
题目一
哈希表
哈希表哈希映射
面试题10.02变位词组
最长回文串
哈希映射不使用任何内建的哈希表库设计一个哈希映射
具体地说,你的设计应该包含以下的功能
put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。
示例:
MyHashMap hashMap = new MyHashMap();hashMap.put(1, 1);hashMap.put(2, 2);hashMap.get(1); // 返回 1hashMap.get(3); // 返回 -1 (未找到)hashMap.put(2, 1); // 更新已有的值hashMap.get(2); // 返回 1hashMap.remove(2); // 删除键为2的数据hashMap.get(2); // 返回 -1 (未找到)
实现一个 ...
链表(自刷)
链表两两交换链表中的节点
合并两个有序链表
两两交换链表中的节点
24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:12输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:12输入:head = []输出:[]示例 3:12输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100
思路定义一个虚拟头结点dummylisty,如果存在可以交换的节点,则按照题目要求把相应位置的节点插入到相应位置。
123456789101112131415161718192021222324class Solution {public: ListNode* swapPairs(ListNode* head) { ListNode *dummyList =new ListNode(-1,head); dummyList->next ...
数组(自刷)
数组杨辉三角
加一
删除排序数组中的重复项
四数之和
杨辉三角118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:
123456789输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]
代码123456789101112131415161718192021class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> res; for(int i = 0; i < numRows; i++) { vector<int> row; row.resize(i+1); row[0] = ...