编程之美2.3——发帖水王(+扩展)

发帖水王——找出数组中超一半的数
//不断找出两个不相同的数,然后把它们删掉,当再找不出不相同的数时,剩下的数就是过半的数

int findOverHalf(int *ID, int N)
{
	int candicate;
	int nTime, i;
	for(i = nTime = 0; i < N; i++)
	{
		if(nTime == 0)
		{
			candicate = ID[i];
			nTime = 1;
		}
		else
		{
			if(candicate == ID[i])
				nTime--;
			else
				nTime++;
		}
	}
	return candicate;
}


扩展,当有3个数,每一个的个数都超过总数的1/4时

借用上面的思想,只不过每次是找出四个不同的

struct candidate
{
	void init()
	{
		aTimes = 0;
		bTimes = 0;
		cTimes = 0;
	}
	//需要判定多种情况:
	//1.全部都为0 
        //2.部分为0
	//3.全不为0
	bool check_and_add(int num)
	{
		if(a == num && aTimes != 0) { aTimes++; return false;}
		if(b == num && bTimes != 0) { bTimes++; return false;}
		if(c == num && cTimes != 0) { cTimes++; return false;}

		if(aTimes == 0) { a = num; aTimes = 1; return false;}
		if(bTimes == 0) { b = num; bTimes = 1; return false;}
		if(cTimes == 0) { c = num; cTimes = 1; return false;}
			
		return true;
	}
	void del()
	{
		aTimes--;
		bTimes--;
		cTimes--;
	}
	int a, aTimes;
	int b, bTimes;
	int c, cTimes;
}person;

candidate findOverQuarter(int *ID,int N)
{
	person.init();
	for(int i = 0; i < N; i++)
		if(person.check_and_add(ID[i]))
			person.del();
	return person;
}


### 寻找活跃的Java论坛帖子或讨论 为了找到关于Java相关的高产帖子或讨论,可以通过以下几个途径来获取有价值的信息: #### 1. Stack Overflow Stack Overflow 是一个非常受欢迎的技术问答网站,其中包含了大量有关Java的问题和解答。通过搜索特定的关键字,如“Java performance optimization”,可以发现很多高质量的话题讨论[^1]。 #### 2. Reddit 社区 Reddit 上有许多专门针对编程和技术交流的子版块(subreddit),比如 r/learnprogramming 和 r/java 。这些地方经常会有开发者分享自己的经验、遇到的问题以及解决方案。参与这样的社区可以帮助更好地理解当前流行的Java话题和发展趋势[^2]。 #### 3. 官方 Oracle Java 论坛 作为Java官方维护者Oracle所运营的一个重要资源中心,这里不仅有来自世界各地的专业人士发表的文章,还有机会直接向专家提问并获得反馈。这使得该平台成为一个不可多得的学习与交流场所。 #### 4. GitHub Discussions 许多开源项目都会在其GitHub页面设置Discussion板块供贡献者们沟通协作。对于那些想要深入了解某些具体库或者框架的人来说,这里是很好的起点。例如Spring Boot就有自己活跃的discussion area,能够帮助用户解决实际编码过程中碰到的各种难题。 ```python import webbrowser def open_forum_links(): forums = [ ("Stack Overflow", "https://stackoverflow.com/questions/tagged/java"), ("Reddit r/java", "https://www.reddit.com/r/java/"), ("Official Oracle Java Forum", "https://community.oracle.com/community/java"), ("Spring Boot Discussion on GitHub", "https://github.com/spring-projects/spring-boot/discussions") ] for name, url in forums: print(f"Opening {name}...") webbrowser.open(url) open_forum_links() ``` 上述Python脚本可以根据个人喜好修改链接列表中的内容,并自动打开浏览器标签页访问指定网址,方便快捷地浏览各个热门Java论坛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值