基础循环遍历,这个编译器有点问题,非要在下面也写一个return..
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- vector<int> v;
- for(int i=1;i
size();i++) - {
- for(int j=0;j
- {
- if(nums[i]+nums[j]==target)
- {
- v.push_back(i);
- v.push_back(j);
- return v;
- }
- }
- }
- return v;
- }
- };
2. 两数相加
题目地址:力扣2
思路:
就是模拟加减运算,注意进位就好。
以及每一个新的结点都要new一下。
代码:
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode() : val(0), next(nullptr) {}
- * ListNode(int x) : val(x), next(nullptr) {}
- * ListNode(int x, ListNode *next) : val(x), next(next) {}
- * };
- */
- class Solution {
- public:
- ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
- ListNode* l3;
- ListNode* t=new ListNode(0);
- l3=t;
- while(l1&&l2)
- {
- t->val=t->val+l1->val+l2->val;
- ListNode* p;
- if(t->val>=10)p=new ListNode(t->val/10);
- else p=new ListNode(0);
- t->val=t->val%10;
- l1=l1->next;
- l2=l2->next;
- if(l1||l2){
- t->next=p;
- t=t->next;
- }
- }
- ListNode* p;
- while(l1)
- {
- t->val=t->val+l1->val;
- if(t->val>=10)p=new ListNode(t->val/10);
- else p=new ListNode(0);
- t->val=t->val%10;
- if(l1->next){
- t->next=p;
- t=t->next;
- }
- l1=l1->next;
- }
- while(l2)
- {
- t->val=t->val+l2->val;
- if(t->val>=10)p=new ListNode(t->val/10);
- else p=new ListNode(0);
- t->val=t->val%10;
- if(l2->next){
- t->next=p;
- t=t->next;
- }
- l2=l2->next;
- }
- if(p->val!=0){
- t->next=p;
- }
- return l3;
- }
- };
3. 无重复字符的最长子串
题目地址:力扣3
思路:
改了好久。。小细节一直错。
三层循环来做这题。
以pwwkew为例,我们肉眼去看的思路是
p
pw
w
w
wk
wke
k
ke
kew
所以用代码模拟就好啦
代码:
- class Solution {
- public:
- int lengthOfLongestSubstring(string s) {
- if(s=="")return 0;
- if(s.length()==1)return 1;
- int t=1;
- int sum=1;
- int g=0;
- for(int i=0;i
length();i++) - {
- t=1;
- for(int j=i+1;j
length();j++) - {
- for(int k=i;k
- {
- if(s[j]==s[k]){
- sum=max(sum,t);
- g=1;
- break;
- }
- }
- if(g==1){
- g=0;
- break;
- }
- t++;
- sum=max(sum,t);
- }
- }
- //sum=max(sum,t);
- return sum;
- }
- };
4. 寻找两个正序数组的中位数
题目地址:力扣4
思路:
不理解为什么这题标记为困难,这就是最简单的把两个递增序列合并成一个递增序列。
最后求一下中位数就好了。
代码:
- class Solution {
- public:
- double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
- vector<int> nums3;
- int i=0;
- int j=0;
- while(i
size()&&jsize()){ - if(nums1[i]
- nums3.push_back(nums1[i]);
- i++;
- }
- else{
- nums3.push_back(nums2[j]);
- j++;
- }
- }
- while(i
size()) - {
- nums3.push_back(nums1[i]);
- i++;
- }
- while(j
size()) - {
- nums3.push_back(nums2[j]);
- j++;
- }
- int w;
- if((nums1.size()+nums2.size())%2==0){
- w=(nums1.size()+nums2.size())/2;
- return (nums3[w-1]+nums3[w])/2.0;
- }
- else{
- w=(nums1.size()+nums2.size())/2;
- return nums3[w];
- }
- }
- };
5. 最长回文子串
题目地址:力扣5
思路:
暴力过不去,所以用了动态规划。
dp[i][j]代表s[i][j]是否是回文数。
首先初始化dp数组,所有dp[i][i]都是1.
当i~j长度为2以及2以内时,只要s[i]==s[j],则它就是回文数,所以dp[i][j]=1.
当长度大于2的时候,我们要看里面的结构,dp[i+1][j-1]是否为1,如果为1说明它里面就是个回文数,比较两端是否相等即可。s[i]==s[j]则dp[i][j]=1。
代码:
- class Solution {
- public:
- string longestPalindrome(string s) {
- if(s.size()==1)return s;
- string c=s.substr(0,1);
- int len=1;
- int st=0;
- int dp[1001][1001];
- memset(dp,0,sizeof(dp));
- for(int i=0;i
length();i++) - {
- dp[i][i]=1;
- }
- for(int i=1;i
length();i++) - {
- for(int j=0;j
- {
- if(s[i]==s[j])
- {
- if(i-j+1<=2)dp[j][i]=1;
- else{
- dp[j][i]=dp[j+1][i-1];
- }
- }
- if(dp[j][i]){
- if(i-j+1>len)
- {
- len=i-j+1;
- st=j;
- }
- }
- }
- }
- return s.substr(st,len);
-
- }
- };
-
相关阅读:
论文阅读(1) Flowtrace 生物流体中相干结构的简单可视化
【算法】基数排序算法的讲解和代码演示
win server 2012 r2 部署 netcore 站点 500.19
天线设计中的负载牵引
docke入门基础知识
模型预测控制(MPC)十一:变量约束的预测控制
重定向、文件偏移量、阻塞和非阻塞 思维导图
场景之在线人数或者粉丝查询实现
基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)
CSS-表格属性(1)
-
原文地址:https://blog.csdn.net/Zero_979/article/details/126852537
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU