• 32.哀家要长脑子了!


    1.299. 猜数字游戏 - 力扣(LeetCode)

    公牛还是挺好数的,奶牛。。。妈呀,一朝打回解放前

    抓本质抓本质,有多少位非公牛数可以通过重新排列转换公牛数字,意思就是,当这个数不是公牛数字时,我们就分别统计它在secret和guess中的数量,然后取数量较少的作为奶牛数就好,因为它是可以调整位置的使它变成公牛数,多余的无法匹配再怎么调整位置也没办法把它变成公牛数。

    1. class Solution {
    2. public:
    3. vector fizzBuzz(int n) {
    4. n += 1;
    5. vector answer(n);
    6. for(int i = 1 ; i < n; i++){
    7. if(i % 3 == 0 && i % 5 == 0){
    8. answer[i] = "FizzBuzz";
    9. }
    10. else if(i % 3 == 0){
    11. answer[i] = "Fizz";
    12. }
    13. else if(i % 5 == 0){
    14. answer[i] = "Buzz";
    15. }
    16. else{
    17. answer[i] = to_string(i);
    18. }
    19. }
    20. return answer;
    21. }
    22. };
    2.412. Fizz Buzz - 力扣(LeetCode)

     匹配就好

    1. class Solution {
    2. public:
    3. vector fizzBuzz(int n) {
    4. n += 1;
    5. vector answer;
    6. for(int i = 1 ; i < n; i++){
    7. if(i % 3 == 0 && i % 5 == 0){
    8. answer.push_back("FizzBuzz");
    9. }
    10. else if(i % 3 == 0){
    11. answer.push_back("Fizz");
    12. }
    13. else if(i % 5 == 0){
    14. answer.push_back("Buzz");
    15. }
    16. else{
    17. answer.push_back(to_string(i));
    18. }
    19. }
    20. return answer;
    21. }
    22. };
    3.506. 相对名次 - 力扣(LeetCode)

     首先自己瞎掰扯了半天 感觉有点冗余 三元运算符还是见样学样的哈哈。。

    1. class Solution {
    2. public:
    3. vector findRelativeRanks(vector<int>& score) {
    4. int n = score.size();
    5. string medal[3] = {"Gold Medal", "Silver Medal", "Bronze Medal"};
    6. vector<int> map(1000010);
    7. vector answer(n);
    8. for(int i = 0; i < n; i++){
    9. map[score[i]] = i;
    10. }
    11. sort(score.begin(), score.end());
    12. reverse(score.begin(), score.end());
    13. for(int i = 0; i < n; i++){
    14. int site = map[score[i]];
    15. answer[site] = i<3 ? medal[i] : to_string(i+1);
    16. }
    17. return answer;
    18. }
    19. };

    后面看了别人的题解(下面这个

    1. class Solution {
    2. public:
    3. vector findRelativeRanks(vector<int>& score) {
    4. int n = score.size();
    5. string medal[3] = {"Gold Medal", "Silver Medal", "Bronze Medal"};
    6. map<int,int> map;
    7. vector answer;
    8. vector<int> a(score.begin(), score.end());
    9. sort(a.begin(), a.end());
    10. reverse(a.begin(), a.end());
    11. for(int i = 0; i < n; i++){
    12. map[a[i]] = i;
    13. }
    14. for(int i = 0; i < n; i++){
    15. int rank = map[score[i]];
    16. string res = rank<3 ? medal[rank] : to_string(rank+1);
    17. answer.push_back(res);
    18. }
    19. return answer;
    20. }
    21. };

    发现我跟人家想法不一样的是:我没有复制数组,先记录排序前原来的位置,然后在制造答案数组的时候遍历排序后的数组,根据记录的原来的位置放答案

    人家是用一个新数组记录排序之后的数组 然后再遍历原数组的元素 根据排序之后的名次决定这个位置的答案数组中是什么结果

  • 相关阅读:
    8.19学习记录 各种比赛的题目总结
    英伟达CEO Jensen Huang 在加州理工学院2024年毕业典礼的讲话:Commencement speech at CALTEC 2024
    c++学习笔记2_继承与多态
    【工具篇】SQLite本地数据库在Unity3D的应用
    LeetCode 0141. 环形链表 - 三种方法解决
    MATLAB变量
    力扣vip
    https 原理与实践
    在哪里可以下载大连大学2023考研真题大纲?学校论坛可以吗
    Marked.js让您的文档编辑更加轻松自如!
  • 原文地址:https://blog.csdn.net/m0_73072282/article/details/140111359