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] = ...