C/C++每日一练20

第一题:今此一役小红所向无敌

题目解析 :假设题目为 "在数组中找到唯一出现奇数次的元素"。由于其他元素出现偶数次,通过异或运算,相同元素异或为 0,0 与目标元素异或结果即为目标值。思路 :利用异或特性:a^a=0,0^a=a。遍历数组,所有元素异或后,偶数次元素抵消,结果就是目标元素。代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; ++i) {
        cin >> nums[i];
    }
    int result = 0;
    for (int num : nums) {
        result ^= num;
    }
    cout << result << endl;
    return 0;
}

第二题:连续子数组最大的和

题目解析 :使用动态规划思想,current表示以当前元素结尾的最大子数组和,每次更新current = max(nums[i], current + nums[i]),同时用max_sum记录全局最大值。思路 :动态规划,用 current 跟踪以当前元素结尾的最大子数组和。对每个元素,选择 "只取当前元素" 或 "当前元素 + 之前的最大和",更新 current 后,用 max_sum 记录全局最大值。代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; ++i) {
        cin >> nums[i];
    }
    int max_sum = nums[0], current = nums[0];
    for (int i = 1; i < n; ++i) {
        current = max(nums[i], current + nums[i]);
        max_sum = max(max_sum, current);
    }
    cout << max_sum << endl;
    return 0;
}

第三题:非对称之美

题目解析 :假设题目为 "判断字符串是否为非回文串",即字符串正序与逆序不相同。通过反转字符串后与原字符串比较,不等则为 "非对称"。思路 :若判断字符串非对称,反转字符串后与原串比较,若不同则为非对称。若题目是数组非对称,可比较数组与反转数组是否不同,或判断是否存在 i 使 nums i≠nums n-1-i代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string s;
    cin >> s;
    string reversed_s = s;
    reverse(reversed_s.begin(), reversed_s.end());
    cout << (s != reversed_s ? "Yes" : "No") << endl;
    return 0;
}

谢谢

相关推荐
白远山13 分钟前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
山下梅子酒22525 分钟前
洛谷-入门-B2049
c语言
布莱克6051 小时前
C++中的内存分区详解
c++
All for pursuit.1 小时前
【链表-9】146.LRU缓存
数据结构·c++·算法·leetcode
shmily麻瓜小菜鸡2 小时前
TDD(测试驱动开发)详解
开发语言·javascript·typescript·node.js·ecmascript
三克的油2 小时前
java-学习1
java·开发语言·学习
j7~3 小时前
【C++微服务项目开发脚手架】(接口篇一)gflags + gtest + spdlog 接口学习笔记
c++·学习·gtest·项目开发·spdlog·gflags·c++项目微服务开发脚手架
剑指offer.3 小时前
嵌入式硬件-ARM芯片的启动
c语言·嵌入式硬件·嵌入式
星期八不上发条3 小时前
智能指针是什么?使用场景,循环引用解决办法,面试回答
开发语言·c++·stl
ao-weilai3 小时前
Linux网络编程:Socket UDP
linux·服务器·网络·c++