阅读视图

发现新文章,点击刷新页面。

银行加速创新押品融资,“商业秘密”贷款不再是秘密

又一种无形资产可以作为质押物申请银行贷款了——没错,就是“商业秘密”。近期,湖北嘉齐扬帆医疗器械有限公司以商业秘密作为质押物,获得交通银行硚口支行120万元贷款,成为武汉市首笔以商业秘密作为质押发放的贷款。从传统的不动产抵押贷款,扩展到以合法拥有的专利权、商标权、著作权中的财产权作为质押物的知识产权质押融资;从在库粮食扩展到农机农具、地上种植物甚至是活体生物资源等更广泛的动产范畴……在抵、质押物方面的开拓创新,银行正在加速迈步。(证券时报)

加州拟推电动汽车购车补贴,特斯拉将被排除在外

加州州长加文·纽森周一宣布,如果美国侯任总统唐纳德·特朗普明年上任后废除一项联邦补贴,则加州计划向电动汽车买家提供激励措施。州长办公室表示,当前的提议涵盖会把特斯拉畅销电动车型排除在外的市场份额限制。细节将跟州议会协商,可能会有调整。“这是为了创造市场条件,让更多汽车制造商上路,”州长办公室表示。(财联社) 收藏阅13.13W

美联储卡什卡利:在12月降息是合理的考虑

美联储卡什卡利表示,在12月降息是合理的考虑。中性利率可能会更高,政策限制不会那么严格。地缘政治风险是经济前景的首要考虑因素。对财政部提名人选不予置评。需要政府让美国走上可持续的财政道路。(财联社)

大运集团回应旗下公司重整事宜:仅重整新能源板块

近日,大运汽车股份有限公司发布重整声明称,当前,在整个市场周期性环境影响下,大运汽车持续优化经营管理方式,资产负债率依然保持在同行业正常水平,但流动资金遭遇阶段性周转困难,给企业发展带来一定影响。为切实保障各方权益,大运汽车依法按程序进行重整。大运汽车母公司大运集团证实,目前,大运汽车没有破产,但正在重整新能源汽车板块业务,包括大运新能源汽车、远航汽车均在重整范围,重卡等商用车板块不在重整范围内。大运集团相关人士表示:“过一段时间,各个新能源汽车生产厂区将陆续恢复作业。”(一财)

蒂森克虏伯钢铁子公司计划削减1.1万工作岗位

蒂森克虏伯钢铁子公司计划到2030年裁撤或外包1.1万个工作岗位,从而缩减这项因全球钢铁过剩和能源价格上涨而损失数十亿欧元的业务。该公司周一表示,钢铁公司的董事会提议裁员5000人,同时将另外6000个职位转移给外部服务提供商。该公司的目标是在未来几年将人事成本平均降低约10%。(新浪财经)

印尼称苹果1亿美元投资计划不足以解除禁令

印尼工业部周一表示,苹果提出的1亿美元投资计划不足以让该国允许这家科技巨头销售其最新款 iPhone机型。去年11月,印尼禁止销售苹果iPhone 16,原因是该公司未能满足国内销售的智能手机至少应包含40%本地制造零部件的要求。印尼当局上周表示,苹果已提出解除销售禁令的投资计划。苹果没有立即回应置评请求。(新浪财经)

美股三大指数集体收涨,大型科技股多数走强

36氪获悉,11月25日收盘,美股三大指数集体上涨,道指涨0.99%,再创历史新高,标普500指数涨0.3%,纳指涨0.27%。大型科技股多数走强,亚马逊涨超2%,谷歌、英特尔、苹果、Meta涨超1%,微软涨0.43%;英伟达跌超4%,特斯拉、奈飞跌超3%。热门中概股涨跌互现,阿里巴巴、百度涨超2%,老虎证券、名创优品涨超1%,理想汽车、拼多多小幅上涨;蔚来跌超3%,腾讯音乐、斗鱼、小鹏汽车跌超2%,网易跌超1%。

遍历计数,C 0ms

Problem: 100336. 交替组 I

[TOC]

思路

直接按题意遍历计数。

Code

执行用时分布0ms击败100.00%;消耗内存分布5.69MB击败100.00%

###C

int numberOfAlternatingGroups(int* colors, int colorsSize) {
    int ans = (colors[colorsSize - 2] != colors[colorsSize - 1] && colors[colorsSize - 1] != colors[0])
            + (colors[colorsSize - 1] != colors[0] && colors[0] != colors[1]);
    for (int i = 2; i < colorsSize; ++ i)
        if ((colors[i - 2] != colors[i - 1] && colors[i - 1] != colors[i])) ++ ans;
    return ans;
}

###Python3

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int]) -> int:
        n, colors = len(colors), colors + colors[:2]
        return sum(colors[i] != colors[i + 1] != colors[i + 2] for i in range(n))

您若还有不同方法,欢迎贴在评论区,一起交流探讨! ^_^

↓ 点个赞,点收藏,留个言,再划走,感谢您支持作者! ^_^

每日一题-交替组 I🟢

给你一个整数数组 colors ,它表示一个由红色和蓝色瓷砖组成的环,第 i 块瓷砖的颜色为 colors[i] :

  • colors[i] == 0 表示第 i 块瓷砖的颜色是 红色 。
  • colors[i] == 1 表示第 i 块瓷砖的颜色是 蓝色 。

环中连续 3 块瓷砖的颜色如果是 交替 颜色(也就是说中间瓷砖的颜色与它 左边 和 右边 的颜色都不同),那么它被称为一个 交替 组。

请你返回 交替 组的数目。

注意 ,由于 colors 表示一个  ,第一块 瓷砖和 最后一块 瓷砖是相邻的。

 

示例 1:

输入:colors = [1,1,1]

输出:0

解释:

示例 2:

输入:colors = [0,1,0,0,1]

输出:3

解释:

交替组包括:

 

提示:

  • 3 <= colors.length <= 100
  • 0 <= colors[i] <= 1

JavaScript 中的 `concat()` 方法详解

在 JavaScript 中,数组和字符串都是常用的数据结构。在实际开发中,操作数组和字符串是非常频繁的任务。concat() 方法就是用于合并数组或字符串的一种常见方法。在本文中,我们将详细探讨

交替组 I

方法一:模拟

思路

按照题意遍历数组 $\textit{colors}$ 的每个元素,判断其前一个元素和后一个元素是否都与当前元素不同,如果满足,则将结果加 $1$。注意瓷砖是环形的,则数组的首尾元素是相邻的。最后返回结果。

代码

###Python

class Solution:
    def numberOfAlternatingGroups(self, colors: List[int]) -> int:
        n = len(colors)
        res = 0
        for i in range(n):
            if colors[i] != colors[i - 1] and colors[i] != colors[(i + 1) % n]:
                res += 1
        return res

###Java

class Solution {
    public int numberOfAlternatingGroups(int[] colors) {
        int n = colors.length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (colors[i] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
}

###C#

public class Solution {
    public int NumberOfAlternatingGroups(int[] colors) {
        int n = colors.Length;
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (colors[i] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
}

###C++

class Solution {
public:
    int numberOfAlternatingGroups(vector<int>& colors) {
        int n = colors.size();
        int res = 0;
        for (int i = 0; i < n; i++) {
            if (colors[i] != colors[(i - 1 + n) % n] && colors[i] != colors[(i + 1) % n]) {
                res += 1;
            }
        }
        return res;
    }
};

###Go

func numberOfAlternatingGroups(colors []int) int {
    n := len(colors)
    res := 0
    for i := 0; i < n; i++ {
        if colors[i] != colors[(i-1+n)%n] && colors[i] != colors[(i+1)%n] {
            res++
        }
    }
    return res
}

###C

int numberOfAlternatingGroups(int* colors, int colorsSize) {
    int res = 0;
    for (size_t i = 0; i < colorsSize; i++) {
        if (colors[i] != colors[(i - 1 + colorsSize) % colorsSize] && colors[i] != colors[(i + 1) % colorsSize]) {
            res += 1;
        }
    }
    return res;
}

###JavaScript

var numberOfAlternatingGroups = function(colors) {
    const n = colors.length;
    let res = 0;
    for (let i = 0; i < n; i++) {
        if (colors[i] !== colors[(i - 1 + n) % n] && colors[i] !== colors[(i + 1) % n]) {
            res++;
        }
    }
    return res;
};

###TypeScript

function numberOfAlternatingGroups(colors: number[]): number {
    const n = colors.length;
    let res = 0;
    for (let i = 0; i < n; i++) {
        if (colors[i] !== colors[(i - 1 + n) % n] && colors[i] !== colors[(i + 1) % n]) {
            res++;
        }
    }
    return res;
};

###Rust

impl Solution {
    pub fn number_of_alternating_groups(colors: Vec<i32>) -> i32 {
        let n = colors.len();
        let mut res = 0;
        for i in 0..n {
            if colors[i] != colors[(i + n - 1) % n] && colors[i] != colors[(i + 1) % n] {
                res += 1;
            }
        }
        res
    }
}

复杂度分析

  • 时间复杂度:$O(n)$。

  • 空间复杂度:$O(1)$。

滑动窗口

解法:滑动窗口

枚举组的开头,那么组中间的 $(k - 2)$ 个元素都需要满足“与两边的颜色不同”的条件。预处理哪些元素和两边的颜色不同,再用滑动窗口统计中间的 $(k - 2)$ 个元素中,有几个满足该条件即可。复杂度 $\mathcal{O}(n)$。

参考代码(c++)

###cpp

class Solution {
public:
    int numberOfAlternatingGroups(vector<int>& colors, int K) {
        int n = colors.size();
        // 预处理哪些元素与两边颜色不同
        int f[n];
        for (int i = 0; i < n; i++) {
            int x = colors[(i - 1 + n) % n];
            int y = colors[i];
            int z = colors[(i + 1) % n];
            if (x != y && y != z) f[i] = 1;
            else f[i] = 0;
        }

        // 滑动窗口
        int sm = 0;
        for (int i = 1; i + 1 < K; i++) sm += f[i];
        int ans = 0;
        for (int i = 0; i < n; i++) {
            if (sm == K - 2) ans++;
            sm -= f[(i + 1) % n];
            sm += f[(i + K - 1) % n];
        }
        return ans;
    }
};
❌