小编Dav*_*ave的帖子

阶乘从偶数开始

我想收集 [a, b] 范围内阶乘以偶数开头的所有数字。

例如:

a = 1, b = 10
Run Code Online (Sandbox Code Playgroud)

回答:

2 3 4 8
Run Code Online (Sandbox Code Playgroud)

解释:

2! = 2 = starts with even
3! = 6 = starts with even
4! = 24 = starts with even
8! = 40320 = starts with even
Run Code Online (Sandbox Code Playgroud)

限制条件:

1 <= a,b <= 100

这是我的代码:

List<Integer> process(int a, int b) {
    long base = i;
    for(int i=1; i<=a; i++) base *= i;
    
    if(even(base)) list.add(a);
    
    for(int i=a+1; i<=b; i++) {
        base *= i;
        if(even(base)) …
Run Code Online (Sandbox Code Playgroud)

java algorithm

5
推荐指数
1
解决办法
802
查看次数

计算列表中每个元素出现的连续子列表的数量

我需要计算原始列表中每个元素出现在该列表的连续子列表中的次数.例如,

对于集合[A,B,C]我应该得到连续的子列表[A,B,C],[A,B],[B,C],[A],[B],[C]这给我跟随数字:
A使用3次
B使用4次
C使用3次

列表[A,B,C,D]应为[A,B,C,D],[A,B,C],[B,C,D],[A,B],[B, C],[C,D],[A],[B],[C],[D]和数字:
A使用4次
B使用6次
C使用6次
D使用4次

我有代码生成所有连续的子列表,并允许我进行计算.但是对于大输入它变得太慢,同时我相信我只是错过了一些允许我进行计算而不会生成所有连续子列表的东西.我将非常感谢任何帮助:谷歌关键字,代码等

    public static IEnumerable<int[]> Permutate(int[] a)
    {
        for (int i = 1; i < a.Length; i++)
        {
            for (int j = 0; j < a.Length-i; j++)
            {
                yield return a.Skip(j).Take(i).ToArray();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# arrays algorithm

2
推荐指数
1
解决办法
141
查看次数

给定一个由数字和字符组成的数组,找出两者数目相等的最长连续子数组

假设给定了一个数组,您必须找到包含相同数量字符和数字的最长连续子数组。例如,我们有一个像 ('a',0,'v',2,4,7,'e','f','b',2,5,2,1) 这样的字符数组。

在这种情况下,最长的子数组将是 ('v',2,4,7,'e','f','b',2),因为它将是 4 个字符和 4 个数字。

我已经解决了类似的问题,比如“最大连续子阵列问题”,但我就是无法解决这个问题。此外,如果这是一个众所周知的问题,那么最好的解决方案是什么?是否可以用 O(n) 的时间复杂度来解决它?

arrays algorithm

2
推荐指数
1
解决办法
112
查看次数

如何扩展 Godot 的 Button 来区分左键单击和右键单击事件?

我使用内置 Button 类创建了一个按钮,并将按钮掩码设置为 BUTTON_MASK_LEFT | BUTTON_MASK_RIGHT。现在,左键单击和右键单击都会发出“按下”信号,但我需要一种方法来判断用户是使用鼠标左键还是右键单击。

gdscript godot

2
推荐指数
1
解决办法
1942
查看次数

将一个数字的标志传递给另一个号码?

我正在寻找一种简洁的方法来取一个数字的符号(积极性或消极性),并将其传递给另一个数字.

例如:

我们给出两个数字,第一个是整数1,第二个是未知的,直到执行时间.
如果未知数小于0,则我们的数字变为-1.
如果未知数大于或等于0,则我们的数字变为1.

如果我们的未知数字是X:


在此输入图像描述

作为代码:

int before = AnyNonzeroInt(); //for this example we will choose 1.
int X = rand(Int32.Min, Int32.Max);
int after = ...
Run Code Online (Sandbox Code Playgroud)

我个人使用C#4.5,但我相信一个好的解决方案是与语言无关的.

我可以想到几种方法,但都涉及if-else-case语句或三元运算符.我想要一种数学方法来做到这一点.

EDITS:

我对三元运营商没有厌恶.但是,我正在处理的代码库有一组代码指南,不允许使用三元运算符,因为它们会使代码变得更复杂(我知道我知道......我没有制定这个规则).

但是,我相信我会接受这个问题,以及它对下一次团队会议的回答,这样我就可以证明我认为三元运营商是多么必要.

c# math

1
推荐指数
1
解决办法
82
查看次数

快速判断一个数字是否可以表示为两个素数的倍数?

假设您有 10e4 个数字。每个数字不超过10e6。如果每个数字可以表示为两个素数的倍数,那么如何有效地检查它?

例子:15可以表示为3*5。6可以表示为2*3。但是8不能用两个素数表示。

algorithm number-theory

0
推荐指数
1
解决办法
479
查看次数

标签 统计

algorithm ×4

arrays ×2

c# ×2

gdscript ×1

godot ×1

java ×1

math ×1

number-theory ×1