目录
268、缺失数字
387、字符串中第一个唯一字符
350、两个数组的交集II
21、合并两个有序链表
121、买卖股票的最佳时机
118、杨辉三角
给定一个包含 0, 1, 2, ..., n
中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1] 输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1] 输出: 8
class Solution {
public:
int missingNumber(vector& nums) {
int res = 0;
for(int i=0; i
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1
案例:
s = "leetcode" 返回 0.
s = "loveleetcode", 返回 2.
注意事项:您可以假定该字符串只包含小写字母。
class Solution {
public:
int firstUniqChar(string s) {
map mymap;
for(int i=0; i
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9]
class Solution {
public:
vector intersect(vector& nums1, vector& nums2) {
vector res;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int i=0, j=0;
while(i
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1==NULL) return l2;
if(l2==NULL) return l1;
if(l1->val < l2->val) {
l1 -> next = mergeTwoLists(l1->next, l2);
return l1;
} else {
l2 -> next = mergeTwoLists(l1, l2->next);
return l2;
}
}
};
题目描述:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
class Solution {
public:
int maxProfit(vector& prices) {
if(prices.empty()) return 0;
int buy = prices[0], res = 0;
for(int i=1; i
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
class Solution {
public:
vector> generate(int numRows) {
vector> res(numRows);
if(numRows==0) return res;
for(int i=0; i