小编par*_*rsh的帖子

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

在三个数组列表中查找总和为零的记录组合?

考虑有三个相同长度的数组列表,其中包含正数,负数和零.我不得不写一个程序来找到总和为零的组合.所以基本上,如果阵列是: -

A = {0, -1, 2}
B = {0, -1, -2}
C = {0, -2, 0}
Run Code Online (Sandbox Code Playgroud)

O/P:A [0] + B [0] + C [0],A [2] + B [2] + C [2]等.

我可以想到两种方法,1.有3个for循环并使用[i] + b [j] + c [k]计算总和,如果为零则打印索引.大O将是O(N ^ 3)2.有两个for循环但使用二进制搜索找到第三个元素,它将总和为零.大O将是O(N ^ 2LogN)

还有其他方法吗?

谢谢.

编辑: 基于下面给出的答案,我的第一次解决是最快的.但是,如果问题是关于"发现"组合的数量和打印它们,然后请参阅下面格里戈尔Gevorgyan回答.

algorithm

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

如何让WCF Dataservice停止跟踪实体更改?

我有一个web应用程序DataServiceContext通过代理调用OData Webservice().问题是代码,即使每次都调用OData webservice,它总是在更改内容管理系统(SDL Tridion)中的内容后返回旧数据.

string getPageContentForUrl(string url)
{
    var page = cdService
                   .Pages
                   .Expand("PageContent")
                   .Where(x => x.Url == url)
                   .FirstOrDefault();

    if (page == null || page.PageContent == null)
    {
        return string.Empty;
    }
    else
    {
        return page.PageContent.Content;
    }

}
Run Code Online (Sandbox Code Playgroud)

我们不得不重置apppool以查看最新的数据更改.

所以在调试时,我注意到了

var context = (System.Data.Services.Client.DataServiceContext)cdService;
context.Entities[0].State = Unchanged
Run Code Online (Sandbox Code Playgroud)

所以我尝试通过.Detach()在返回值之前显式调用来修复它getPageContentForUrl,所以像,

cdService.Detach(page);
cdService.Detach(page.PageContent);
Run Code Online (Sandbox Code Playgroud)

我的问题是,我是否可以在更"全局"的水平上执行上述操作,也许Web服务总是将状态视为"已更改",因为我不想手动编写代码Detach()

wcf-data-services odata tridion tridion-content-delivery

8
推荐指数
2
解决办法
3538
查看次数

循环遍历表单内的所有ng-form实例以进行验证

我创造了一个plunker.

当单击"+ Name"按钮时,我会动态生成输入元素,每个按钮都在ng-form中.

如何获取ng-form的所有实例以验证每个ng-form?如果字段无效或创建了新的ng-form,那么"+ Name"按钮将保持禁用状态?

编辑 有关表单结构的更多详细信息

由于简洁原因,我删除了表单中的其他字段.它基本上是一个长形式,类似于

<form name="myForm">
     <input name="one" />
     .
     .
     <div ng-repeat....>
         <ng-form>
            <input name="schoolName" />
         </ng-form>
     </div>
    <button>+ Name</button>  <!-- I cannot check for myForm.$valid here-->
    <!-- since the person might not filled the rest of the below fields -->
     <!-- hence the need to grab "each" "ng-form" --> 
    <input name="some" />
    <input name="other" />        
</form>
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat

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

使用C#在LinkedList中进行循环检测

在访谈问题中,"实现一种检测循环存在的算法".例如,链表有一个循环,如:

0--->1---->2---->3---->4---->5---->6
                 ?                 |
                 |                 ?
                11<—-22<—-12<—-9<—-8
Run Code Online (Sandbox Code Playgroud)

使用Floyd的循环检测,可以通过使用快速和慢速指针来解决此问题.我应该尝试比较

一个.链接的节点值,即

if (fast.data == slow.data) 
    break;
Run Code Online (Sandbox Code Playgroud)

快速和慢速的类型 Link

class Link
{
    int IData {get; set;}
    Link Next {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

要么

他们是否指向相同的参考,即if (fast == slow)

谢谢.

c# linked-list floyd-cycle-finding

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