首页 > TAG信息列表 > minsum

图的最短路径问题(一)--深度优先搜索算法解决单源单向图

本人在博客园的第一篇题解,日期2022年3月8日晚上7点。 前言:本文适合有一定dfs基础和图论基础的人借鉴。 1.深度优先搜索算法(Deep First Search):   不过度赘述,利用递归调用。下面给出模板。 1 void dfs(参数列表){ 2 //剪枝 3 4 //递归结束 5 6 //递归 7 8 }

最小子树——lintcode596

最小子树 题目:最小子树 给一棵二叉树, 找到和为最小的子树, 返回其根节点。 示例: 输入: {1,-5,2,1,2,-4,-5} 输出:1 说明 这棵树如下所示: 1 / \ -5 2 / \ / \ 1 2 -4 -5 整颗树的和是最小的,所以返回根节点1. 题解:分治法 public class Solution { priva

bbb

bool check(int mid){  int sum=0,sumL=0;  for(int i=1;i<=L;i++) sum += a[i] = mid;  int MaxSum = -inf ,MinSum=inf;  for(int i=L;i<=n;i++){    MaxSum = max(MaxSum,sum-MinSum);    sum += a[i+1]-mid;    MinSum = min(MinSum,sumL);  }  retu

每日随机一题 leetcode638. 大礼包

题: 思:深搜暴力解法 码: public static int shoppingOffers(List<Integer> price, List<List<Integer>> special, List<Integer> needs) { // 深搜 要使得needs的所有元素恰好变为0时,所需的最小的价格和 // 对于needs的每一项,只要不为0,就有以下几种选择:

【题解】力扣1423. 可获得的最大点数

题目来源 1423. 可获得的最大点数 思路 滑动窗口 由于每次只能拿开头和结尾的牌,所以最后剩下的必然是连续的n-k张牌。可以用滑动窗口的方法来求解中间连续的牌的最小值,然后利用一开始的总和减去剩余卡牌的点数之和的最小值,得出拿走的卡牌的点数之和的最大值。 代码 class Solution

可获得的最大点数

可获得的最大点数 滑动窗口的方法 思路:设计数组cardPoints,数组的长度为l,由于只可以在左边或者右边去拿卡牌,中间留下的肯定是一个l-k的连续数组,这样就可以用一个滑动窗口来写。 可以先求出连续子数组l-k的最小值,这样就可以得到拿走k张卡牌的最大值。 java代码: package 可获

力扣1423. 可获得的最大点数-C语言

题目 题目链接 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数组 cardPoints 和整数 k,请你返回可以获

Leetcode每日一题:1423. 可获得的最大点数

目录 问题描述思路分析及代码实现 问题描述 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数

LC 918. Maximum Sum Circular Subarray

link     class Solution { public: int maxSubarraySumCircular(vector<int>& A) { int maxsum=INT_MIN; int minsum=INT_MAX; int total=0; int curmax=0; int curmin=0; for(int i=0;i<A.size();i++){

Maximum Subarray

Description Given an array of integers, find a contiguous subarray which has the largest sum. The subarray should contain at least one number. Example Example1: Input: [−2,2,−3,4,−1,2,1,−5,3]Output: 6Explanation: the contiguous subarray [

LintCode 44---最小子数组

public class Solution { /* * @param nums: a list of integers * @return: A integer indicate the sum of minimum subarray */ public int minSubArray(List<Integer> nums) { // write your code here if (nums == null)

字符串分割为回文串的最小分割次数(palindrome-partitioning-i)

题目描述 Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s ="aab", Return1since the palindrome partitioning["aa"