算法训练营补签day25

题目1:669. 修剪二叉搜索树 - 力扣(LeetCode)

class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if(root == NULL) return NULL;
        if(root->val < low) {
            TreeNode* right = trimBST(root->right, low, high);
            return right;
        }
        if(root->val > high) {
            TreeNode* left = trimBST(root->left, low, high);
            return left;
        } 
        root->left = trimBST(root->left, low, high);
        root->right = trimBST(root->right, low, high);
        return  root;
    }
};

题目2:108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode)

class Solution {
public:
    TreeNode* traversal(vector<int>& nums, int left, int right) {
        if(left > right) return NULL;
        int mid = (left + right) / 2;
        TreeNode* node = new TreeNode(nums[mid]);
        node->left = traversal(nums, left, mid - 1);
        node->right = traversal(nums, mid + 1, right);
        return node;
    }
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return traversal(nums, 0, nums.size() - 1);
        
    }
};

题目3:538. 把二叉搜索树转换为累加树 - 力扣(LeetCode)

class Solution {
public:
    int pre = 0;
    void traversal(TreeNode* node) {
        if(node == NULL) return;
        traversal(node->right);
        node->val = node->val + pre;
        pre = node->val;
        traversal(node->left); 
    }
    TreeNode* convertBST(TreeNode* root) {
        traversal(root);
        return root;
    }
};

### 回答1: 答案: 使用Typescript实现补签功能的步骤如下: 1. 在你的项目中创建一个新目录,并定义一个Typescript接口来定义补签功能的输入和输出。 2. 在这个新目录中创建一个补签的函数,它将接收输入参数,并返回补签后的结果。 3. 使用Typescript编译器将补签函数转换成Javascript代码,以便在浏览器中运行。 4. 将补签函数添加到你的应用程序中,以实现补签功能。 ### 回答2: 在 TypeScript 中编写一个补签功能的一个简单实现可以如下: ```typescript interface AttendanceRecord { date: string; isAbsent: boolean; } class Employee { private name: string; private attendanceRecords: AttendanceRecord[]; constructor(name: string) { this.name = name; this.attendanceRecords = []; } markAttendance(date: string, isAbsent: boolean) { this.attendanceRecords.push({ date, isAbsent, }); } makeUpAttendance(date: string) { const existingRecord = this.attendanceRecords.find( (record) => record.date === date ); if (existingRecord) { existingRecord.isAbsent = false; } else { this.attendanceRecords.push({ date, isAbsent: false, }); } } getAttendanceRecords() { return this.attendanceRecords; } } // 使用示例 const employee = new Employee("张三"); employee.markAttendance("2022-01-01", true); // 2022-01-01 缺勤 employee.markAttendance("2022-01-02", false); // 2022-01-02 出勤 console.log(employee.getAttendanceRecords()); // 输出: [{ date: '2022-01-01', isAbsent: true }, { date: '2022-01-02', isAbsent: false }] employee.makeUpAttendance("2022-01-01"); // 补签 2022-01-01 console.log(employee.getAttendanceRecords()); // 输出: [{ date: '2022-01-01', isAbsent: false }, { date: '2022-01-02', isAbsent: false }] ``` 以上代码创建了一个 `Employee` 类,每个员工都有一个姓名和记录出勤情况的数组。 `markAttendance` 方法用于标记出勤情况,`makeUpAttendance` 方法用于补签指定日期之前的缺勤记录。 `getAttendanceRecords` 方法用于获取所有的出勤记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值