10.10 LeetCode 3285 3280 3274

目录

  • [leetcode 3285](#leetcode 3285)
  • [leetcode 3280](#leetcode 3280)
  • [leetcode 3274](#leetcode 3274)

leetcode 3285


cpp 复制代码
class Solution {
public:
    vector<int> stableMountains(vector<int>& height, int threshold) {
        vector<int> ans;
        for(int i=1; i<height.size(); i++){
            if(height[i-1] > threshold){  //判断下标为 i 山是否稳定
                ans.push_back(i);
            }
        }
        return ans;
    }
};

leetcode 3280


思路如下:

先定义转化为二进制的函数

进行切割前,先找到切割位置,即 "-" 的位置,记录下来

切割字符串,年月日

将字符串类型转化为数字类型

cpp 复制代码
class Solution {
public:

    string to_binary(int x){
        stringstream res;  // 可变长字符串

        while(x){
            res << char((x % 2) + '0');   //加 '0' 变成字符  (int + char = int) 强制转换
            x = x / 2;
        }

        string r = res.str();
        reverse(r.begin(), r.end());

        return r;
    }

    string convertDateToBinary(string date) {
        string year = "";
        string month = "";
        string day = "";
        int n = date.length();
        vector<int> pos;   // 动态数组:记录 "-" 的位置
        for(int i=0; i<n; i++){
            if(date[i] == '-'){
                pos.push_back(i);
            }
        }

        year = date.substr(0, pos[0]);
        month = date.substr(pos[0] + 1, pos[1] - pos[0] -1);
        day = date.substr(pos[1] + 1, n - pos[1] - 1);

        int y = stoi(year);
        int m = stoi(month);
        int d = stoi(day);

        string ans = to_binary(y) + "-" + to_binary(m) + "-" + to_binary(d);
        return ans;

    }
};

注:

(1)可变长字符串

定义可变长字符串:stringstream res; // 可变长字符串

写入:res << char((x % 2) + '0');

取出:string r = res.str();

(2)类型强制转换:char((x % 2) + '0')

int + char = int ---> char

(3)翻转(reverse)reverse(r.begin(), r.end());

数组(数组、动态数组、字符串)

(4)切割(substr):year = date.substr(0, pos[0]);

(5)字符串类型转化为数字类型:int y = stoi(year);

leetcode 3274


思路如下:

先写一个函数来获取每个字符串所表示的颜色

将给的字符串进行拆分,得到行列,找规律得到颜色

cpp 复制代码
class Solution {
public:
    //获取字符串表示的颜色
    // 1 表示为白
    // 2 表示为黑
    int get_color(string id){
        char col = id[0];
        char row_char = id[1];
        int row =  row_char - '0';

        if(id[0] == 'a' || id[0] == 'c' || id[0] == 'e' || id[0] == 'g'){
            if(row%2 == 0){
                return 1;
            }
            else{
                return 2;
            }
        }
        else{
            if(row%2 == 0){
                return 2;
            }
            else{
                return 1;
            }
        }
        return 0;
    }
    
    bool checkTwoChessboards(string coordinate1, string coordinate2) {
        int color1 = get_color(coordinate1);
        int color2 = get_color(coordinate2);
        // if(color1 == color2) return true;
        // else return false;
        return color1 == color2;
    }
};

注:

(1)row 为 int 类型,可以通过两个字符相减得到。

cpp 复制代码
char row_char = id[1];
int row =  row_char - '0';
相关推荐
励志成为嵌入式工程师35 分钟前
c语言简单编程练习9
c语言·开发语言·算法·vim
师太,答应老衲吧41 分钟前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
捕鲸叉1 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer1 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
wheeldown2 小时前
【数据结构】选择排序
数据结构·算法·排序算法
观音山保我别报错3 小时前
C语言扫雷小游戏
c语言·开发语言·算法
TangKenny4 小时前
计算网络信号
java·算法·华为
景鹤4 小时前
【算法】递归+深搜:814.二叉树剪枝
算法
iiFrankie4 小时前
SCNU习题 总结与复习
算法
Dola_Pan5 小时前
C++算法和竞赛:哈希算法、动态规划DP算法、贪心算法、博弈算法
c++·算法·哈希算法