Đua đòi code python
find_max2 = lambda a: max(filter(max(a).__ne__,a))
Đua đòi code python
find_max2 = lambda a: max(filter(max(a).__ne__,a))
cách đầu là sort lại. Xuất ra array[2]. Cách thứ 2 là tìm max như bình thường, khi tìm được max mới thì lưu max cũ vào nếu không có max mới thì lấy thằng bé hơn thằng max nhất. mà bài dễ dư này không làm được mà được lương 8 triệu chắc bác ấy làm về web. hồi lớp 10 lão thầy cho bài tìm đường đi ngắn nhì trong đồ thị, thằng nào làm được lão cho 10 ngàn. Ngồi nghĩ nát óc méo ra.
Em code 5 phút đây nhé các bác. O(N) luôn. không kể nhập xuất. :3
#include <bits/stdc++.h>
#define maxn 99999
using namespace std;
int a[maxn], n;
int main()
{
ios_base::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
int maxx1 = a[1];
int maxx2 = -1e9+7;
for (int i = 2; i <= n; i++)
if (a[i] > maxx1)
{
swap (maxx1, maxx2);
maxx1 = a[i];
} else
if(a[i] != maxx1)
{
maxx2 = max (a[i], maxx2);
}
cout << maxx2 << endl;
return 0;
}
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
Hai cái này là bình luận về phần thuật toán, thiên về lý thuyết . Đương nhiên đề không yêu cầu
.
Phải định nghĩa exception (hoặc chí ít là thêm msg cụ thể cho Exception). Người dùng không sai . Cái này đang bình luận về phần kỹ thuật lập trình.
This post was flagged by the community and is temporarily hidden.
Khi bạn viết một hàm bạn phải đảm bảo kiểm tra hết các edge cases của nó, đó là việc bình thường. Lấy lại cái ví dụ sqrt của bạn. Trong document của C++ định nghĩa đàng hoàng Exception, loại gì, tham số gì:
Square root of x.
If x is negative, a domain error occurs: If a domain error occurs:
Việc bạn không kiểm tra object = null có thể chấp nhận được vì gọi kiểu nào nó cũng raise một exception phổ biến là NullPointerException (Java) - chứ không có nghĩa là các trường hợp tương tự bạn cũng làm như vậy. Không đảm bảo kiểm tra edge cases là sai cơ bản về kỹ thuật, nó là một việc hàm đó phải làm.
cái này là trick rồi, không tính là lỗi nữa, cơ mà công nhận dễ nhầm thật , cái này phải Raise ArgumentError
This post was flagged by the community and is temporarily hidden.
#include <iostream>
int getScMax(int*, int);
int main() {
int arr[10] = {1,7,9,6,23,56,32,32,5,56};
std::cout << getScMax(arr,10) << std::endl;
}
int getScMax(int *arr, int n) {
int max = 0;
int scMax = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > max) {
scMax = max;
max = arr[i];
}
else if (arr[i]<max && arr[i]>scMax) {
scMax = arr[i];
}
}
return scMax;
}
Hồi phỏng vấn ở Capegini cũng làm kiểu sắp ấy, xong họ ok nhưng gợi ý dùng 1 vòng for, cũng làm dùng 2 kia temp như trên. mỗi câu hỏi người phỏng vấn luôn có ý đồ nào đó, nắm được thì tốt. như câu trên họ hỏi mình là hướng tới performance.
Sau đó hỏi thêm 1 câu : kiêm tra mảng int có dạng hình sin hay không. Cái này thì muốn bắt tất cả exception.
#include<stdio.h>
#include<stdlib.h>
void thuhai(int a[],int kichthuoc);
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
printf("moi ban nhap phan tu thu %d:",i+1);
scanf("%d",(a+i));
}
thuhai(a,10);
}
void thuhai(int a[],int kichthuoc)
{
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(a[j]<a[i])//sap xep cac phan tu trong mang thoe thu tu tang dan
{
int k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
printf("phan tu lon thu 2 trong mang la :%d",a[8]);
}
đây là code của em anh ý tưởng của em là sắp xếp các phần tử trong mảng theo thứ tự lớn dần và sau đó in ra phần tử lớn thứ 2 mong anh cho ý kiến ạ em cảm ơn anh @ltd
Tất cả các phần tử trong mảng như nhau thì sao?
Mảng chỉ có 1 tử thì sao
tôi không xét mảng có 1 phần tử mà ông giống nhau thì chơi tất
Mình thấy ngôn ngữ R khá hay trong toán học và phân tích dữ liệu. Hi vọng trong diễn đàn mình cũng có nhiều người nghiên cứu ngôn ngữ này.
second <- function(x,k){
y <- x[!is.na(x)]
z <- y[duplicated(y) == FALSE]
sort(z, decreasing = TRUE)[k]
}
second2 <- function(x,k){
y <- x[!is.na(x)]
if(length(y) < k){
paste("So phan tu thuc cua x nho hon", k)
} else if(k == 1){
max(y)
} else {
for(i in 1:(k-1)){
z <- max(y)
y <- y[y != z]
}
max(y)
}
}
Góp vui
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int> vInt;
vInt.push_back(3); vInt.push_back(4);
vInt.push_back(8); vInt.push_back(7);
vInt.push_back(2); vInt.push_back(9);
if (vInt.size() > 1) {
nth_element(vInt.begin(), vInt.begin()+1, vInt.end(), greater<int>());
cout << vInt[1];
} else {
cout << "There's only one element in your array!";
}
return 0;
}
theo google thì cho thấy 115tr kết quả :)) k yêu cầu tốc độ thì việc gì k dùng a gồ
Không
sort
, không max
, không unique
– tất cả hãy để map
lo ! ^^
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int,bool> OK;
int A[10]={11,45,67,1000,43,86,32,56,89,54};
for (int i=0;i<10;i++)
OK[A[i]]=true;
map<int,bool>::iterator p=OK.end();
p-- = p--;
cout<<"Second element in the descending array: "<<p->first;
}