算法题
Nahhhhhhhhhh
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营第十一天|LeetCode20. 有效的括号、 1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
20. 有效的括号力扣题目链接。原创 2023-01-08 20:18:08 · 93 阅读 · 0 评论 -
代码随想录算法训练营第十天|LeetCode225. 用队列实现栈、232.用栈实现队列
225. 用队列实现栈。232.用栈实现队列。原创 2023-01-06 21:42:43 · 102 阅读 · 0 评论 -
代码随想录算法训练营第八天|LeetCode344.反转字符串、541. 反转字符串II、151.翻转字符串里的单词、剑指Offer 05.替换空格、58-II.左旋转字符串
344.反转字符串力扣题目链接。原创 2023-01-04 14:57:41 · 108 阅读 · 0 评论 -
代码随想录算法训练营第七天|15. 三数之和 、18. 四数之和、454.四数相加II、 383. 赎金信
你应该不难看出,对于b\c,我们只要在找到符合sum==0的【pos,lo,hi】时,判断一下hi-1/lo+1是否与hi\lo相同即可,相同则向后或向前移动一位,就能略过下一轮的相同的三数组合,但是对于a我们怎么处理呢?因此,我们对于a去重的时刻,便是每次刚进入循环,去判断一下nums[i]与nums[i-1]是否相等,如何相等直接略过即可,因为对。这道题是经典的哈希思想的题目,暴力求解法的下时间复杂度必定O(n^4),这个时候往往需要一些空间换时间的办法。,而我们恰巧也是从最左端开始循环的。原创 2023-01-03 23:06:10 · 397 阅读 · 0 评论 -
代码随想录算法训练营第六天|242.有效的字母异位词、349. 两个数组的交集力扣题目链接、202. 快乐数 、1. 两数之和
这道题的核心在于如何适时的跳出循环判断false,因为题目给到了某些数字有可能会无限循环。的思想,牺牲了一定的空间,换取了快速查找某个字符出现次数,该场景下也没有哈希冲突的情况。此后再遍历一遍哈希表,若哈希表中全为0,则二者判等,若只要有一个格子不为0,则必不等。因此我们只需要把计算得到的sum都存起来,然后判断有没有与此前相等的sum值,即可。在这里我们开辟一个哈希数组即可,且大小为字母个数-26。算法为:先遍历字符串s,某个字符出现一次,其对应的哈。‘a’的数值为97,‘A’的数值为65。原创 2023-01-03 12:48:08 · 273 阅读 · 0 评论 -
代码随想录算法训练营第四天|24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、160.链表相交、142.环形链表II
24. 两两交换链表中的节点。原创 2022-12-31 22:13:22 · 360 阅读 · 0 评论 -
代码随想录算法训练营第三天| LeetCode203.移除链表元素、707.设计链表、206.反转链表
203.移除链表元素。原创 2022-12-30 17:20:14 · 75 阅读 · 0 评论 -
代码随想录算法训练营第二天| LeetCode977. 有序数组的平方、27. 移除元素、59.螺旋矩阵2
代码随想录算法训练营第二天| LeetCode977. 有序数组的平方、27. 移除元素、59.螺旋矩阵2原创 2022-12-29 17:19:37 · 466 阅读 · 0 评论 -
leetcode27 - 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝。原创 2022-12-28 16:09:16 · 95 阅读 · 1 评论 -
leetcode 704 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1。原创 2022-12-28 16:01:31 · 70 阅读 · 0 评论 -
贪心:高级钟点秘书-会议安排 c++
在最短的时间召开更多的会议。会议有开始时间和结束时间。分析:按照结束时间sort,统计就行了,一个个放进背包里,统计数量。#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int M=10000000;struct Meet{ ...原创 2018-11-12 17:27:23 · 453 阅读 · 0 评论 -
leetcode 126 单词接龙2
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设...原创 2018-11-12 14:00:37 · 371 阅读 · 0 评论 -
算法笔记:阿里巴巴与四十大盗---背包问题 C++
问题描述:阿里巴巴闯进了四十大盗的宝藏山洞,山东一共有n种宝物,每种宝物有一定的重量w和相应的价值v,毛驴只能运走m重量的宝物,一种宝物只能拿一样,宝物可以分割,怎样才使价值最大呢?思路:有两个条件,一个是价值与重量,宝物本身,还有一个限制条件,驴的容量。这里多了一个前提,宝物可以分割,因此,我们不选择最轻重量或者最贵宝物,而是单位价值最高的宝物先装。算法设计:创造一个结构体,存入,w,v...原创 2018-11-05 19:29:28 · 2345 阅读 · 0 评论 -
算法笔记:加勒比海盗船---最优装载问题 如何将最多的宝物装上船 贪心求解 C++
问题描述:在北美洲的南部,有一片美丽神秘的海域,名字叫作加勒比海,那里有一群海盗,非常猖獗。有一天海盗收获了很多古董,海盗船的载重为C,每件古董的重量为wi,如何将尽可能多的宝物装上船呢?思路:很明显的最优装载问题,船的容量固定,要求宝贝最多,当然每次把最轻的宝物放进船上。最轻先装的贪心策略,来保证局部最优从而达到全局最优。实现:将宝物质量排序,用c++的排序函数sort()。【sort(...原创 2018-11-05 19:02:19 · 1078 阅读 · 0 评论 -
leetcode 127 单词接龙 c++ 临接表 宽度优先搜索
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord ...原创 2018-11-10 22:38:12 · 709 阅读 · 0 评论 -
leetcode 199 二叉树的右视图 c++
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */cla...原创 2018-10-22 17:12:01 · 239 阅读 · 0 评论 -
leetcode 207 课程表 有向图 邻接表 判断是否有环 c++实现
class Solution { struct GraphNode{ int label; vector<GraphNode*>neighbors; GraphNode(int x):label(x) {}; }; bool DFS_Graph(GraphNode* node,vector<int>&...原创 2018-10-22 18:36:16 · 654 阅读 · 0 评论 -
leetcode 35 搜索插入位置 Search Insert Position 二分查找 c++实现
二分查找很简单:两种 一种递归 一种循环这道题分两种情况:1.查的数在排序数组里,输出查到的点的位置信息就行 2.查的数不在数组里,输出它应该在的地方,这里就几个小难点,没处理好有用例就过不了 (一个情况start=end,一个情况end<start,但是都能用mid=start+end/2来与所求点比较)代码如...原创 2018-10-22 19:21:16 · 425 阅读 · 0 评论 -
leetcode 315 计算右侧小于当前元素个数 c++
class Solution {public: vector<int> countSmaller(vector<int>& nums) { vector<pair<int,int>>vec; vector<int>count; for(int i=0;i<nums....原创 2018-10-29 12:26:46 · 280 阅读 · 0 评论 -
leetcode 34 Find First and Last Position of Element in Sorted Array C++
class Solution {public: int right(vector<int>& nums, int target){ int begin=0; int end=nums.size()-1; while(begin<=end){ int mid=(begin+end)/2; ...原创 2018-10-24 22:47:06 · 173 阅读 · 0 评论 -
leetcode 33 Search in Rotated Sorted C++
class Solution {public: int search(vector<int>& nums, int target) { int begin=0; int end=nums.size()-1; while(begin<=end){ int mid=(begin+end)/2;...原创 2018-10-27 11:17:12 · 112 阅读 · 0 评论 -
leetcode 935 骑士拨号器 动态规划法
国际象棋中的骑士可以按下图所示进行移动: . 这一次,我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步。每一步必须是从一个数字键跳到另一个数字键。每当它落在一个键上(包括骑士的初始位置),都会拨出键所对应的数字,总共按下 N 位数字。你能用这种方式拨出多少个不同的号码?因为答案可能很大,所以输出答案模 10^9 ...原创 2018-11-06 14:50:25 · 804 阅读 · 0 评论 -
leetcode 49 字母异位词分组 哈希表法 c++
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"],原创 2018-11-06 16:24:39 · 357 阅读 · 0 评论 -
leetcode 3 无重复字符的最长子窜 c++ c语言 两种解法 暴力搜索跟哈希表
c语言:int lengthOfLongestSubstring(char* s) { int index = 0; int max = 1; int i=0; while(s[i]!=NULL) { i++; } int len = i; if( len == 0) ...原创 2018-11-06 17:07:10 · 296 阅读 · 0 评论 -
leetcode 187 重复的dna序列 哈希表法 c++
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。分析:先把所有长度为10的字串枚举出来,统计出现次数。暴力法。示例:输入: s = "AAAAACCCCCAAAAACCCCCCAAAA...原创 2018-11-06 17:53:19 · 303 阅读 · 0 评论 -
leetcode 76 最小覆盖子串 哈希表法 c++
给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。分析:对于s,t分别创建两个表,存储其中字母出现的次数,在s中寻找,并比较两个表,如果t...原创 2018-11-06 20:04:46 · 278 阅读 · 0 评论 -
Python 常见基础语句与方法总结 实用大全
这里总结了一些常用及不常用的语句,帮助大家更好的理解python的语句,与应用到实用场景。整除与幂计算:print('a//b=',a//b)print('a**2=',a**2)print('a**0.5=',a**0.5)成员运算符,in ,not in,身份运算符,is ,is not:print('>>>>>>成员运算符')we...原创 2018-11-02 15:16:16 · 9454 阅读 · 0 评论 -
leetcode 200 岛屿的个数 c++ 搜索
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3class Solution {pub...原创 2018-11-07 14:58:36 · 790 阅读 · 0 评论 -
leetcode 206 c++实现 链表逆序
class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *newhead=NULL; while(head) { ListNode *next = head->next; head->next...原创 2018-10-22 17:07:26 · 210 阅读 · 0 评论