【力扣 中等 C】983. 最低票价

目录

题目

解法一:一维dp


题目

待添加

解法一:一维dp

cpp 复制代码
int min(int a, int b)
{
    return a < b ? a : b;
}

int find(const int* nums, int start, int end, int target)
{
    int left = start, right = end;
    int index = end + 1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (nums[mid] < target)
            left = mid + 1;
        else if (nums[mid] > target)
        {
            index = mid;
            right = mid - 1;
        }
        else
            return mid;
    }
    return index;
}
 
int compute(const int* days, int size1, const int* costs, int size2)
{
    const int cDays[3] = {1, 7, 30};

    int* dp = malloc(sizeof(*dp) * (size1 + 1));
    for (int i = 0; i < size1; i++)
        dp[i] = INT_MAX;
    dp[size1] = 0;

    for (int i = size1 - 1; i >= 0; i--)
        for (int j = 0; j < 3; j++)
        {
            int nextIndex = find(days, i, size1 - 1, days[i] + cDays[j]);
            dp[i] = min(dp[i], costs[j] + dp[nextIndex]);
        }
    
    int minCharge = dp[0];
    free(dp);
    return minCharge;
}
 
int mincostTickets(int* days, int daysSize, int* costs, int costsSize)
{
    return compute(days, daysSize, costs, costsSize);
}
相关推荐
pingan878715 小时前
试试 docx.js 一键生成 Word 文档,效果很不错
开发语言·前端·javascript·ecmascript·word
程序员小崔日记15 小时前
一道KMP统考真题彻底讲透:nextval与滑动距离的本质
算法·408·王道计算机考研
xiaoye-duck15 小时前
《算法题讲解指南:动态规划算法--路径问题》--9.最小路径和,10.地下城游戏
c++·算法·动态规划
big_rabbit050215 小时前
java面试题整理
java·开发语言
渡过晚枫15 小时前
[第十四届蓝桥杯/java/算法]国赛A——跑步计划
算法
hanlin0315 小时前
刷题笔记:力扣第17题-电话号码的字母组合
笔记·算法·leetcode
刺客xs15 小时前
c++模板
java·开发语言·c++
weixin_5375904515 小时前
《C程序设计语言》练习答案(练习1-5)
c语言·开发语言
不是株15 小时前
算 法
数据结构·python·算法
云泽80815 小时前
蓝桥杯算法精讲:从宏观角度重新认识递归
算法·职场和发展·蓝桥杯