惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
WordPress大学
WordPress大学
罗磊的独立博客
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security
S
SegmentFault 最新的问题
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
D
DataBreaches.Net
雷峰网
雷峰网
GbyAI
GbyAI
宝玉的分享
宝玉的分享

博客园 - ahui

解决在IIS中调用Microsoft Office Excel组件后进程无法正常退出的问题 Javascript实现scroll时固定html元素 [小技巧]提交数据并下载文件的实现方式 轻量级DbHelper同时支持多个不同的数据库 Emit实现简单的C# AOP框架 Reflector的替代方案 .NET2.0项目Ajax请求处理 EntityFramework4.1和ADO.NET插入操作性能比较 MVC+ExtJs之验证信息无缝结合 16进制字符串和Byte之间的互转 设置预览图片自适应(保持原比例) Entity Framework4.1实现动态多条件查询、分页和排序 C#读写socket的常用方式 异步接收Socket数据 Mysql备份代码 android下修改hosts文件 Android和.NET通用的AES算法 .NET和Android解压缩处理 Android轻量级JSON操作类
一道算法题(负数左边,正数右边)的最优答案
ahui · 2011-09-19 · via 博客园 - ahui
int[] source = { 5, -3, 6, -7, -6, 1, 8, -4, 0, 0 };
int toRightIdx = 0;
int toLeftIdx = source.Length - 1;
int leftIdx = 0;
int rightIdx = source.Length - 1;
int[] result = new int[source.Length];

while (true)
{
    if (toLeftIdx >= 0)
    {
        int left = source[toRightIdx++];
        if (left < 0) result[leftIdx++] = left;

        int right = source[toLeftIdx--];
        if (right > 0) result[rightIdx--] = right;
    }
    else
    {
        result[rightIdx--] = 0;
    }
    if (leftIdx > rightIdx) break;
}

应该算是最好的解法了吧:P